Каковы риски использования символов кавычек как части параметра URL? - PullRequest
2 голосов
/ 02 ноября 2010

Мне нужно разрешить пользователю отправлять запросы следующим образом:

/search/"my search string"

, но это не удается из-за проверки запроса, как описано в следующих 2 вопросах:

Каквключить символы кавычек в качестве параметра маршрута?Получение сообщения «Недопустимые символы в пути»

Как изменить проверку запроса?

В настоящее время я пытаюсь выяснить, как отключить проверку запроса дляцитата, но я хотел бы знать риски, прежде чем я на самом деле запустить сайт с этим отключен?Я не отключу проверку запроса, если не смогу отключить его только для символа кавычки, поэтому я намерен запретить все остальные символы, которые в настоящее время не разрешены.

1 Ответ

3 голосов
/ 02 ноября 2010

Согласно спецификации универсального синтаксиса URI ( RFC 2396 ), символ двойной кавычки явно исключен и должен быть экранирован (т. Е. %22).Смотрите раздел 2.4.3.Причина, приведенная в спецификации:

Символы угловых скобок «<» и «>» и двойных кавычек (") исключены, поскольку они часто используются в качестве разделителей вокруг URI в текстовых документах.и поля протокола.

Вы можете легко понять, почему это так - представьте, что вы пытаетесь создать ссылку в HTML на ваш URL:

<a href="http://somesite/search/"my search string""/>

Это может привести к сбою анализа HTML(а также нарушает подсветку синтаксиса SO.) У вас также могут возникнуть проблемы с выполнением основных операций с URL-адресом, таких как отправка его по электронной почте кому-либо (почтовый клиент не сможет правильно проанализировать URL-адрес), размещение его на доске объявлений и мгновенная отправкасообщение и т. д.

Для чего это стоит, пробелы также явно исключены (тот же раздел RFC объясняет, почему).

...