2010-02-25 12 views
5

¿Alguien puede arrojar algo de luz sobre por qué DotNetNuke viene configurado con validación de solicitud y validación de evento deshabilitada? Ambos están desactivados en el nivel web.config para una instalación predeterminada que parece ser un enfoque regresivo. ¿Hay alguna razón sólida para esto y cuál es el impacto funcional en DotNetNuke si se vuelven a activar?¿Por qué DotNetNuke tiene validación deshabilitada?

Obviamente, la validación de entrada apropiada debe estar ocurriendo en el código de todos modos, pero el comportamiento del .NET framework nativo es siempre un buen repliegue.

Actualización: nuevas ideas sobre esto en Request Validation, DotNetNuke and design utopia

Respuesta

4

Resulta que las personas en DotNetNuke han desactivado esto para facilitar el envío de contenido HTML a través de controles de texto enriquecido. Desactivar la validación tanto de solicitud como de evento es por diseño.

Hubiera preferido que esto se haga en el nivel de la página donde sea necesario. La validación global de ninguna manera exime al desarrollador de validar la entrada en cada punto donde se captura, pero sigo manteniendo que esta característica es un buen seguro y deshabilitarlo crea un riesgo. Me interesaría mucho ver cuántos sitios de DNN tienen vulnerabilidades XSS como resultado de una validación global combinada con prácticas de desarrollo deficientes.

4

validación global de toda la entrada es una mala práctica. Al igual que la mayoría de las aplicaciones, DotNetNuke funciona función por función para la validación de entrada.

La creación de un código vulnerable depende en gran medida de cómo se utiliza la entrada del usuario. Por ejemplo, SQL Injection y XSS dependen de caracteres de control muy diferentes. La inyección de SQL puede ser causada por no filtrar uno de los tres caracteres '"\, mientras que la mayoría de los XSS son causados ​​por no filtrar <>. Inyección SQL también puede ser causada por no utilizando caracteres de control, por ejemplo, este código es vulnerable a la inyección de SQL, ya que no tienen que comillas alrededor Identificación:

SqlCommand("SELECT username FROM users where id="+id) 

validación de entrada globales como magic_quotes_gpc bajo PHP también va a fallar para prevenir este tipo de ataque, y esa es una de las razones por las cuales se elimina en PHP6.

+2

¿Está diciendo que la validación global en sí misma es mala o solo si se usa en lugar de validar explícitamente la información caso por caso? No veo cómo usarlo como una red de seguridad adicional es algo malo. Ciertamente, Microsoft pensó que valía la pena incluirlo. –

+0

@Troy Hunt Sí, la validación de entrada global es mala. Hace perezosos a los programadores y nunca podrá prevenir todas las vulnerabilidades. Aunque admito que magic_quotes_gpc evitará la mayoría de las inyecciones sql. El problema es que * most * no es lo suficientemente bueno, solo se necesita 1 vulnerabilidad para obtener Pnw3d. Los programadores deben ser responsables de las vulnerabilidades que crean y deben saber cómo aplicarles parches. – rook

Cuestiones relacionadas