¿Qué es específicamente "potencialmente peligroso" sobre un signo en una URL?

4

ASP.NET incluye un sistema de validación de solicitudes que detiene el procesamiento de la página si alguno de los siguientes caracteres está presente en la parte de la ruta de la URL < > * % & : \ ? . En lugar de la página normal, el tiempo de ejecución devuelve una página de error que dice

  

Se detectó un valor Request.Path potencialmente peligroso del cliente

La única información que he podido encontrar acerca de que es "potencialmente peligrosa" son referencias vagas a XSS. ¿Cuál es el problema específico que el tiempo de ejecución está tratando de mitigar? Si necesito aceptar direcciones URL en mi aplicación que no puedo controlar y que podrían contener algunos de los caracteres no seguros, ¿es seguro desactivar la validación en tiempo de ejecución?

(Ya hay numerosos artículos sobre cómo para desactivar la validación, pero ninguno de ellos menciona las implicaciones de hacerlo).

    
pregunta just.another.programmer 02.02.2017 - 12:47
fuente

1 respuesta

2

Es difícil responder a su pregunta sobre si es seguro deshabilitar la validación sin conocer las circunstancias exactas, pero le advierto que no la deshabilite si usted mismo no realiza una validación completa del componente de la ruta.

El signo de interrogación y el símbolo comercial pueden ser peligrosos porque se utilizan para pasar parámetros a una aplicación a través de una URL. El signo y también es un problema porque las entidades html se pueden codificar con él ( &auml; produce 'ä'). Esto no es realmente un problema en una URL, pero si su codificación / decodificación es ligeramente incorrecta e inserta una variable de obtención que contiene estos en su página html, puede permitir que un atacante incluya etiquetas html peligrosas como la etiqueta de script, iframes, etc. El carácter de porcentaje es un problema porque se utiliza para codificar caracteres especiales en las URL. Y, por supuesto, el < y > son un problema porque se usan para etiquetas HTML.

Si su aplicación proporciona una forma de aceptar la ruta de solicitud (o el contenido del cuerpo) con estos caracteres de cualquier persona, alguien podría pensar en una forma de usarlos para engañar a su aplicación para que haga algo involuntario.

Por ejemplo, si no validó la ruta de la solicitud y su aplicación insertó el valor de la variable 'título' en su página si estaba presente, esto sería inofensivo cuando alguien solicitara una url como http://www.example.com/profile?user=johndoe&title=John , pero alguien más podría usar http://www.example.com/profile?user=johndoe&title=<script>really bad script here<script> (probablemente codificando el valor del título usando el porcentaje de url) y hacer que su script se ejecute en el contexto de su página.

Sería aún peor si almacenó el valor de la variable de título en una base de datos y luego se lo mostrara a todos los usuarios que querían ver el perfil de John Doe, porque eso ejecutaría el script cada vez que Alguien miró el perfil de john doe. El script podría entonces robar las cookies de estos usuarios o hacerles algo realmente horrible y malvado. :-) El ejemplo es un poco exagerado, pero el problema básico no lo es.

    
respondido por el Pascal 04.02.2017 - 11:30
fuente

Lea otras preguntas en las etiquetas