2012-02-02 9 views
5

Tenemos un cuadro de texto en el sitio que permite a los usuarios buscar cosas. Esto se devuelve al servidor que se apaga, realiza una búsqueda y arroja algunos resultados (mostrándolos en la pantalla).Validación de solicitud: ¿cómo y por qué está deshabilitada en SiteCore?

Cuando ingreso algo dudoso, p. algunas marcas que esperaría recibir una excepción de .NET a lo largo de las líneas de:

A potentially dangerous Request.QueryString value was detected from the client (q="<img src="http://www..."). 

Como yo lo entiendo, that has been default behaviour since v1.1 of ASP.NET. Y luego en v4.0 permaneció como el predeterminado they just extended it to all requests (no solo páginas web).

Así que la pregunta es la siguiente:

1. how have sitecore disabled this? 
2. what can I do to re-enable this globally (i.e. not on a per page basis)? 

observo que hay una sección del web.config que comienza así:

<!-- Continue to run Sitecore without script validations --> 
<pages validateRequest="false" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"> 
+0

Creo que su respuesta está aquí: [http://stackoverflow.com/questions/2673850/validaterequest-false-doesnt-work-in-asp-net-4][1] [1 ]: http://stackoverflow.com/questions/2673850/validaterequest-false-doesnt-work-in-asp-net-4 –

+0

¿estás seguro? Porque no estoy tratando de desactivarlo; Estoy tratando de recuperar el comportamiento predeterminado. Además, en C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ ASP.NETWebAdminFiles \ web.config Línea 18: Así que esta debería ser la configuración raíz que será el valor predeterminado si no especifica en el sitio web de su sitio web. – chrislewisdev

+0

Bueno, si lo entendí bien, .NET 4 cambió ese comportamiento. Sí, asumí que estás construyendo encima de v4. Así, pues, este debe forzar v4 a comportarse como v2 al respecto: ' '. Entonces, debería poder configurarlo de la misma manera que solía hacerlo con asp.net 2.0/3.5. –

Respuesta

5

Ha respondido a sus propias preguntas. Aquí están las respuestas a sus preguntas:

  1. En Sitecore el valor por defecto web.config viene con este conjunto como <pages validateRequest="false" ... />

  2. para encenderlo, la pusieron a true

Además, se puede Eche un vistazo a this blog post que indica que el procesador SuppressFormValidation en la tubería PreprocessRequest puede estar causando este problema.

Aquí está el código "ofender" a que se identificó:

namespace Sitecore.Pipelines.PreprocessRequest 
{ 
    public class SuppressFormValidation : PreprocessRequestProcessor 
    { 
     public override void Process(PreprocessRequestArgs args) 
     { 
      Assert.ArgumentNotNull(args, "args"); 
      try 
      { 
       NameValueCollection form = args.Context.Request.Form; 
      } 
      catch (HttpRequestValidationException exception) 
      { 
       if (!args.Context.Request.RawUrl.StartsWith("/sitecore/shell/", StringComparison.InvariantCultureIgnoreCase)) 
       { 
        Log.Error(exception.Message, exception, this); 
       } 
      } 
     } 
    } 
} 

La entrada del blog tiene nuevo código se puede reemplazar con sólo suprimir la validación en la cáscara Sitecore (la interfaz gráfica de back-end).

+0

Esto no tiene ningún efecto. Lo elevaré al soporte del sitio. – chrislewisdev

+0

He editado mi respuesta con algo que puede ser útil. –

+0

Esa parece ser la respuesta correcta. He sacado ese paso de la tubería y funciona bien.Buscaré volver a habilitarlo como lo hizo ese tipo porque los propios documentos de SiteCore indican que eliminarlo por completo puede romper el editor de contenido: http://sdn.sitecore.net/Scrapbook/Configuring%20pages%20web,-d -, config% 20section.aspx – chrislewisdev

Cuestiones relacionadas