La inyección puede ocurrir en cualquier instrucción SQL que no se ejecute correctamente.
Por ejemplo, imaginemos que su tabla de comentarios tiene dos campos, una ID de entero y la cadena de comentario. Quizás INSERT
de la siguiente manera:
INSERT INTO COMMENTS VALUES(122,'I like this website');
considerar a alguien entrar en el siguiente comentario:
'); DELETE FROM users; --
Si usted acaba de poner la cadena de comentario en el SQL sin ningún processesing esto podría dar vuelta a su sola INSERT
a las siguientes dos declaraciones seguidas de un comentario:
INSERT INTO COMMENTS VALUES(123,''); DELETE FROM users; -- ');
esto sería eliminar todo, desde su mesa users
. Y hay personas dispuestas a pasar todo el día encontrando el nombre de tabla correcto para vaciar usando prueba y error y varios trucos. Here's a description of how you could perform an SQL Injection attack.
Necesita evitar el parameterized SQL statements para evitar esto.
Y esto no es solo por razones de seguridad. Por ejemplo, si va a crear las sentencias SQL ingenuamente el siguiente comentario:
I'm just loving this website
podría causar un error de sintaxis SQL debido a la apóstrofe ser interpretada por SQL como una cotización de cierre.
Información adicional: Cuando construya una página web, no se concentre solamente en la inyección sql. Compruebe también el peligro XSS del texto antes de insertarlo en su base de datos. ¿Están protegidos todos los códigos de salida a través de Server.HtmlEncode (...)? –