2011-04-04 13 views
6

(ASP.NET 4.0 C#) "falsa" está actuandovalidateRequest = raro

tengo mi <httpRuntime requestValidationMode="2.0" /> en el webconfig. Y Tengo mi validateRequest="false" en directorios de página.

En una página, envío algunos datos (html) de un ckeditor (textarea) a una base de datos. Funciona bien. En otra página, llené el ckeditor con datos de una base de datos, luego lo actualicé (lo devolví) y obtuve el famoso "Se detectó un valor Request.Form potencialmente peligroso desde el cliente".

Me hace muy confundido. La única diferencia es que en la segunda página los datos se insertan dinámicamente en el área de texto, donde en la primera página el área de texto está vacío en la carga de la página. ¿Me estoy perdiendo de algo? Estoy bastante seguro de que la codificación/decodificación no significa nada, ya que el framework lo detiene antes de que yo pueda comenzar a jugar con él en el back-end.

+0

¿Estás seguro de que tienes validateRequest = false en ambas páginas? tal vez para moverlo en web.config. – Aristos

+0

¿ValidateRequest distingue entre mayúsculas y minúsculas? – IrishChieftain

Respuesta

1

Está bien que no he encontrado una respuesta a por qué se comportan de la manera que es. Pero encontré una forma muy fácil y rápida de hacerlo (+ nuevos beneficios).

Hay un tipo que hizo un control CKEditor .net

http://cksource.com/forums/viewtopic.php?f=11&t=15882

Hay ya go. Funciona de maravilla. Sin errores de validación, nunca más.

0

Intenta configurar ValidateRequest en false en la directiva de la página? Una mejor opción podría ser la de utilizar el Microsoft Anti-XSS Biblioteca:

http://msdn.microsoft.com/en-us/library/aa973813.aspx

Una pregunta similar fue respondida aquí:

What's the difference between requestValidationMode 2.0 and 4.0

También es posible que sea ASP.NET 4.0 no está instalado o que el grupo de aplicaciones no está configurado para ejecutarse en 4.0.

+0

Ya tengo validateRequest to false en la directiva de la página, como se indica en mi pregunta :) El otro hilo realmente no ayuda, pero trata de buscar en el otro enlace que me has enviado. Gracias por la respuesta :) –

+0

Compruebe la configuración básica del conjunto de aplicaciones en IIS para ver si está configurada en 4.0. Si no es así, este podría ser el problema. – IrishChieftain

+0

Solo lo estoy ejecutando en un servidor virtual a través de VS10 :) –

0

ValidationRequest = "false" solo se aplicó a los archivos .aspx en versiones anteriores del marco.

En ASP.NET 4 está habilitado para todas las solicitudes antes de la fase BeginRequest de cualquier solicitud HTTP. Por lo tanto, la validación de solicitud se aplica a las solicitudes de todos los recursos de ASP.NET, como las llamadas al servicio web y los manejadores HTTP personalizados.

Para eludir este nuevo mecanismo uno debe crear su propio RequestValidator y cambiar el web.config para usar este validador personalizado.

http://msdn.microsoft.com/en-us/library/system.web.util.requestvalidator.aspx

+0

Aha. Interesante. Lo investigaré. Por cierto, una pequeña actualización sobre El problema. Aparentemente, el marco no impide que mis datos sean ingresados ​​en mi base de datos, solo muestra el error: S –

+0

Está bien David, lo he leído. Buenas cosas. Pero ¿no estás diciendo todo lo contrario de lo que está diciendo msdn? Para mí suena como (después de leer su enlace) No tengo que preocuparme por los errores de validación. Mi única preocupación es si QUIERO validar algo específico. Pero ¿no está diciendo que siempre validará, no importa qué? –

+0

De todos modos, realmente no quiero desperdiciar más lágrimas. Creo que voy a hacer mi propio Validador de solicitudes como dijiste. Hay un buen ejemplo en msdn. Gracias por tu compañero de tiempo. –

Cuestiones relacionadas