Pregunta

¿Cuáles son las mejores maneras (o al menos la mayoría de las formas comunes) en ASP (VBScript) para el control de la entrada?Mis principales preocupaciones son HTML/JavaScript inyecciones & inyecciones de SQL.Hay algunos equivalente a PHP htmlspecialchars o addslashes, et cetera?O tengo que hacerlo manualmente con algo parecido a la cadena de sustituir las funciones?

¿Fue útil?

Solución

El resultado final es este:

  1. Siempre HTML-codificar la entrada del usuario antes de escribir a su página. Server.HTMLEncode() lo hace por ti.
  2. Siempre usar consultas con parámetros para la interfaz con una base de datos.El ÀDODB.Command y ADODB.CommandParameter los objetos son la elección correcta aquí.
  3. Siempre use la utilidad URLScan y bloqueo de IIS en el servidor de IIS, que vuelve a la página, a menos que sean de la versión 6, que no requieren de estas herramientas ya.

Si nos atenemos a los puntos 1 y 2 servilmente, No puedo pensar en mucho de lo que puede ir mal.

La mayoría de las vulnerabilidades vienen de no correctamente la codificación de entrada de usuario o la construcción de cadenas SQL a partir de ella.Si por alguna razón llegado al punto en el HTML codificación de la entrada del usuario se encuentra en su camino, se ha encontrado un defecto de diseño en su aplicación.

Otros consejos

Agregaría a la lista Tomalaks otro punto.

Evite usar la concatenación de valores de campo en el código SQL. Es decir, en algunos casos, un procedimiento almacenado puede generar algo de SQL en una cadena para su posterior ejecución. Esto está bien a menos que se use un valor de campo textual como parte de su construcción.

Un parámetro de comando puede proteger el código SQL diseñado para ingresar un valor de ser secuestrado para ejecutar SQL no deseado, pero permite que dicho SQL no deseado se convierta en datos en la base de datos. Esta es una vulnerabilidad de primer nivel. Existe una vulnerabilidad de inyección de segundo nivel si el valor del campo se utiliza en alguna concatenación de cadenas SQL dentro de un procedimiento almacenado.

Otra consideración es que esto es solo una protección mínima. Todo lo que hace es hacer que los intentos de ataque sean inofensivos. Sin embargo, en muchos casos, puede ser mejor agregar a esto un sistema que evite la entrada de datos por completo y / o altere a los administradores a un posible ataque de inyección.

Aquí es donde la validación de entrada se vuelve importante. No conozco ninguna herramienta que haga esto por usted, pero algunas expresiones regulares simples podrían ayudar. Por ejemplo, & Quot; & Lt; \ w + & Quot; detectaría el intento de incluir una etiqueta HTML en el campo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top