Escape de cadenas SQL en Java

Fondo:

Actualmente estoy desarrollando una interfaz Java para una base de datos de Enterprise CMS (Business Objects). En este momento, estoy creando una función para permitir al usuario crear una consulta de base de datos personalizada. Ya he implementado medidas para garantizar que el usuario solo pueda seleccionar utilizando un subconjunto de las columnas disponibles y los operadores que han sido aprobados para su acceso (por ejemplo, SI_EMAIL_ADDRESS puede seleccionarse mientras que los campos más poderosos como SI_CUID no pueden ser). Hasta ahora, las cosas han ido bien, pero ahora es el momento de asegurar esta función contra posibles ataques de inyección de SQL.

La pregunta:

Estoy buscando un método para escapar de las cadenas de entrada del usuario. Ya he visto PerparedStatement, sin embargo, estoy obligado a usar API de terceros para acceder a la base de datos. Estas APIs son inmutables para mí y el acceso directo a la base de datos está fuera de discusión. Los métodos individuales toman cadenas que representan las consultas que deben ejecutarse, lo que invalida PreparedStatement (que, según mi conocimiento, debe ejecutarse contra una conexión de base de datos directa).

He considerado usar String.replace (), pero no quiero reinventar la rueda si es posible. Además, estoy muy lejos de los expertos en seguridad que desarrollaron PerparedStatement.

También he mirado la referencia de la API de Java para PerparedStatement, con la esperanza de encontrar algún tipo de método toString (). Por desgracia, no he podido encontrar nada de ese tipo.

Cualquier ayuda es muy apreciada. Gracias de antemano.

Referencias:

Java - escape de cadena para evitar la inyección de SQL

Equivalente de Java para mysql_real_escape_string de PHP ()

Respuestas a la pregunta(3)

Su respuesta a la pregunta