Опасно ли включение двойного побега?

Я + (приблизительно 18 символов) + N = безопасный InternationalizatioN

I18N означает, что шаги были сделаны во время проектирования и разработки, которое упростит Локализацию (L10N) позже.

133
задан Alex 21 September 2009 в 07:19
поделиться

2 ответа

Edit: Добавлен акцент на соответствующие разделы.

В основном: IIS чрезмерно параноик. Вы можете безопасно отключить эту проверку, если вы re не делать ничего особенно неразумного с данными, декодированными uri (например, генерировать URI локальной файловой системы посредством конкатенации строк).

Чтобы отключить проверку, выполните следующие действия (из здесь ): (см. мой комментарий ниже для что влечет за собой двойное экранирование).

<system.webServer>
    <security>
        <requestFiltering allowDoubleEscaping="true"/>
    </security>
</system.webServer>

Если символ плюса является допустимым символом во вводе поиска, вам потребуется , чтобы включить «allowDoubleEscaping», чтобы разрешить IIS обрабатывать такой ввод из пути URI.

Наконец, очень простой, хотя и ограниченный обходной путь - просто избежать «+» и использовать вместо него «% 20». В любом случае использование символа «+» для кодирования пробела является не допустимым кодированием URL , но специфичным для ограниченного набора протоколов и, вероятно, широко поддерживается по причинам обратной совместимости. Если только в целях канонизации, в любом случае лучше кодировать пробелы как "% 20"; и это позволяет обойти проблему IIS7 (которая все еще может возникать для других последовательностей, таких как% 25ab.)

154
ответ дан 24 November 2019 в 00:03
поделиться

Думали ли вы о том, что URL-адрес поиска будет выглядеть как '/ search / a / b / c'?

Вам нужно будет настроить маршрут, например,

search/{*path}

А затем извлеките значения поиска из строки пути в действии.

HTHs
Чарльз

1
ответ дан 24 November 2019 в 00:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: