OWASP tiene algo de información sobre esta estrategia. Siempre debe ser una opción de último recurso (como se explica en el artículo que estoy ligarse a), pero si es la única opción ...
http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet
una cita del artículo acerca de que sea un última- opción zanja
Sin embargo, esta metodología es frágil comparación con el uso parametrizados consultas. Esta técnica solo debe ser utilizada, con precaución, para actualizar el código heredado de una manera rentable. Las aplicaciones creadas desde cero o requieren tolerancia de bajo riesgo o se han reescrito usando consultas parametrizadas .
En esencia, el argumento en contra de este enfoque es incluso si usted escapa de todos los datos erróneos conocidos, no hay garantía de que alguien no encuentre una manera de eludirlo en el futuro.
Sin embargo, para responder a su pregunta específica ...
una lista de personajes de escapar se encuentra en el artículo he vinculado anteriormente.
Editar Como se señaló, el artículo no proporciona enlaces muy buenos. Sin embargo, para SQL Server, este hace: http://msdn.microsoft.com/en-us/library/ms161953.aspx
Tenga en cuenta que la lista de caracteres que necesita para escapar variará según la plataforma DB, pero parece que está usando SQL Server, por lo que esto debería ser relevante. .
Cita del artículo siguiente:
filtrado de entrada también puede ser útil en la protección contra la inyección de SQL mediante la eliminación de caracteres de escape.Sin embargo, debido a la gran cantidad de caracteres que pueden plantear problemas, esta no es una defensa confiable. El siguiente ejemplo busca el delimitador de cadena de caracteres.
private string SafeSqlLiteral(string inputSQL)
{
return inputSQL.Replace("'", "''");
}
cláusulas LIKE
Tenga en cuenta que si está utilizando una cláusula LIKE, caracteres comodín todavía deben escaparse:
s = s.Replace("[", "[[]");
s = s.Replace("%", "[%]");
s = s.Replace("_", "[_]");
ouch. normalmente es 3) que debe modificarse para evitar la inyección de SQL. Recuerde, es "Inyección de SQL", no "Rechazo de SQL". Una vez que llega al DB, ya debe ser limpiado. Pero si dices que no puedes cambiar la aplicación, entonces supongo que no puedes. Interesado en ver las respuestas. – RPM1984