Escapando SQL Strings em Java

Fundo:

Atualmente, estou desenvolvendo um front end Java para um banco de dados do Enterprise CMS (Business Objects). No momento, estou construindo um recurso para permitir que o usuário crie uma consulta de banco de dados personalizada. Já implementei medidas para garantir que o usuário só possa selecionar usando um subconjunto das colunas disponíveis e operadores que foram aprovados para acesso do usuário (por exemplo, SI_EMAIL_ADDRESS pode ser selecionado enquanto campos mais poderosos como SI_CUID não podem ser). Até agora, as coisas estão indo muito bem, mas agora é hora de proteger esse recurso contra possíveis ataques de injeção de SQL.

A questão:

Eu estou procurando um método para escapar seqüências de caracteres de entrada do usuário. Eu já vi PerparedStatement, no entanto, sou forçado a usar APIs de terceiros para acessar o banco de dados. Essas APIs são imutáveis ​​para mim e o acesso direto ao banco de dados está fora de questão. Os métodos individuais usam strings representando as consultas a serem executadas, invalidando, assim, o PreparedStatement (que, a meu conhecimento, deve ser executado em uma conexão direta com o banco de dados).

Considerei usar String.replace (), mas não quero reinventar a roda, se possível. Além disso, estou muito longe dos especialistas em segurança que desenvolveram o PerparedStatement.

Eu também tinha olhado a referência da API Java para PerparedStatement, esperando encontrar algum tipo de método toString (). Infelizmente, não consegui encontrar nada do tipo.

Qualquer ajuda é muito apreciada. Agradeço antecipadamente.

Referências:

Java - cadeia de escape para evitar a injeção de SQL

Java equivalente para mysql_real_escape_string () do PHP

questionAnswers(3)

yourAnswerToTheQuestion