¿Dónde está el lugar “correcto” para comprobar si una cadena de consulta ha sido manipulado?

StackOverflow https://stackoverflow.com/questions/4357259

Pregunta

Quiero añadir Querystring "comprobación" y el registro en el caso de cualquier "manipulado" cadenas de consulta. Es el evento Page_Init en una página determinada el lugar adecuado para hacer que en la página ASP.Net ciclo de vida?

¿Fue útil?

Solución

Mi regla general es hacer todo lo más pronto posible. Esto incluso podría incluir la verificación tan pronto como Application.BeginRequest (que se produce eventos de mayo antes de que la página se haya cargado siquiera), siempre y cuando la consulta de verificación de cadena no es dependiente de la página.

La pregunta aquí es "¿Cuáles considera que está manipulando?" las claves no válidas? Los valores no válidos? Los intentos de codificar etiquetas que se espera puedan ser escritas a la página de resultados como parte de un ataque XSS?

Es difícil dar cualquier tipo de asesoramiento específico sin saber más acerca de lo que estamos tratando de lograr.

Editar : Para acceder a los eventos de la aplicación, añadir un Clase de aplicaciones globales para su proyecto desde la opción 'Agregar nuevo elemento'

.

Cada solicitud activa la aplicación del ciclo de vida , y el ciclo de vida es la página sólo un sub-proceso en que cuando el controlador de solicitudes pasa a ser un archivo aspx.

Edit2 : Limpieza de datos cadena de consulta depende por completo de lo que está utilizando los datos de. Algunos usos potencialmente peligrosos para los datos de cadena de consulta son:

  • Los valores para un comando SQL . De inyección SQL puede ser mitigado en gran medida mediante el uso de 'consultas parametrizadas'
  • Ubicaciones de archivos . Esto podría ser utilizado para hacer la tos servidor de seguridad de cualquier archivo en el disco duro si los permisos NTFS en el servidor son laxas
  • Los valores escritos en la respuesta HTML : Un usuario puede codificar una etiqueta y ejecutar código JavaScript. Asegúrese de utilizar Server.Encode () o limpiar manualmente la cadena.
  • valores de ID : Si está utilizando la cadena de consulta de valores de ID de tienda, un usuario podría reemplazar a aquellos con los demás en al intento de acceder a información sobre las cosas que no deberían ver, una ejemplo de la cual puede ser:

    http://domain.com/somepage.aspx?userid=1343243

El usuario realiza una conjetura y la cambia a:

http://domain.com/somepage.aspx?userid=0

Y que podría traer el usuario administrador.

Otros consejos

Lo que seguimos en nuestro proyecto para el uso cifrar y descifrar cadena de consulta. Te puedo enviar esa clase para cifrar y descifrar la función. Pero como referencia se puede empezar con siguiente URL si ayuda.

http://geekswithblogs.net/casualjim/articles/64639.aspx

Ahora, en este caso es templado, no podía ser descifrado. Se puede escribir la página excepción de nivel para ello y redirección a la página de error adecuado.

Avísame si necesita más información sobre cualquier punto específico.

Saludos !!!

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