Проверка запроса - как и почему она отключена в SiteCore? - PullRequest
5 голосов
/ 02 февраля 2012

У нас есть текстовое поле в sitecore, которое позволяет пользователям искать вещи.Он отправляет сообщение обратно на сервер, который отключается, выполняет поиск и возвращает некоторые результаты (показывая их на экране).

Когда я ввожу что-то хитрое, например, некоторую разметку, я ожидаю получить исключение .netстроки:

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

Насколько я понимаю, это поведение по умолчанию начиная с v1.1 ASP.NET .А затем в v4.0 он остался по умолчанию , они просто расширили его для всех запросов (не только для веб-страниц).

Итак, вопрос в следующем:

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

Замечу, что есть раздел web.config, который начинается так:

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

1 Ответ

5 голосов
/ 03 февраля 2012

Вы ответили на свои вопросы.Вот ответы на ваши вопросы:

  1. В Sitecore значение по умолчанию web.config поставляется с этим набором как <pages validateRequest="false" ... />

  2. Чтобы включить егоустановите его на true

Кроме того, вы можете взглянуть на это сообщение в блоге , которое указывает, что процессор SuppressFormValidation в конвейере PreprocessRequest можетбыть причиной этой проблемы у вас.

Вот «обидный» код, который был идентифицирован:

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);
                }
            }
        }
    }
}

В блоге есть новый код, которым вы можете заменить его, чтобы подавить только проверку воболочка Sitecore (внутренний интерфейс).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...