2011-04-29 19 views
5

Tengo un código de JavaScript que accede a una base de datos sqlite3. Me gustaría validar el valor de mi campo de texto y evitar la inyección de SQL. ¿Hay un "algoritmo óptimo" para eso?Cómo evitar la inyección de SQL en un campo de texto de JavaScript?

--actualización: Estoy desarrollando una aplicación de escritorio Xulrunner. Tal vez debería usar la base de datos en el componente xpcom, que está compilado (escrito en C), por lo que el usuario no tendrá acceso a él ...

+0

Presumiblemente, el Javascript no está accediendo a la base de datos directamente, ya que normalmente se encuentra Javascript en el lado del cliente. ¿Qué estás ejecutando en tu servidor? –

+0

dupe? http://stackoverflow.com/questions/3913837/best-way-to-prevent-sql-injection-using-javascript-or-c – slandau

+0

¿Tu código de JavaScript está accediendo directamente al db? –

Respuesta

8

Normalmente, la inyección de SQL se evita utilizando sentencias de SQL parametrizadas.

Aquí hay un artículo MSDN que describe cómo lo haría.

Aquí hay otra article que describe varias formas de prevenir la inyección de sql.

5

La prevención de inyección SQL se realiza en el servidor, no hay nada que pueda hacer en el lado del cliente para evitarlo.

+2

Sí, pero está usando sqlite3, que supongo que es local en lugar de servidor. –

+0

@Gordon Worley, en este contexto, diría que el servidor incluiría algún tipo de lenguaje como PHP, C#, etc. que el usuario final no puede desactivar/modificar. –

+0

@Gordon Worley: ¿Quiere decir que está accediendo a una base de datos que reside en el lado del cliente? Hombre, eso es un concepto. Nunca pensé en eso. –

0

No estoy seguro del tipo de entorno en el que se encuentra, pero tenga en cuenta que debido a la naturaleza de JavaScript y la forma en que se ejecuta en navegadores, etc., los ataques de inyección de código son relativamente fáciles, por lo que cualquier validación lo hace en el lado del cliente podría ser flanqueado por cualquiera que sea serio acerca de un ataque. No es que no deba validar, solo debe tener en cuenta que debe prestar atención a dónde se está ejecutando para saber si la validación es suficiente.

Cuestiones relacionadas