Я использую фреймворк Codeigniter PHP. В одном из файлов конфигурации вы можете установить допустимые URL-адреса:
$config['permitted_uri_chars'] = 'az 0-9~%.:_\-';
Поэтому, если я попытаюсь перейти к этому URL-адресу: website.com/controller/%22quotedString%22 , я получу ошибку, если я не добавлю цитату разрешенным символам:
$config['permitted_uri_chars'] .= '"';
Моему приложению действительно нужно разрешить все странные символы в URL-адресе, но я не хочу иметь огромный жесткий список символов. Codeigniter предупреждает об отсутствии всех символов:
/* |-------------------------------------------------------------------------- | Allowed URL Characters |-------------------------------------------------------------------------- | | As a security measure you are STRONGLY encouraged to restrict URLs to | as few characters as possible. By default only these are allowed: az 0-9~%.:_- | | Leave blank to allow all characters -- but only if you are insane. | | DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!! | */
Они не говорят точно, что такое проблемы безопасности, позволяя всем персонажам. Итак, какие проблемы?
Нет никаких неотъемлемых угроз безопасности, позволяющих использовать все возможные символы в вашем URL-адресе. Вопросы безопасности зависят от того, что ваше приложение делает с ними.
См. Этот ответ . Это в значительной степени объясняет, что пользователь может делать, если вы позволяете им делать все, что им нужно 🙂 В основном, не позволяя «<» и «» в ваших URL-адресах, вы защищаете себя от XSS и SQL-инъекций. Однако, если вы избегаете должным образом и контролируете все, что я считаю, нет никакой проблемы в разрешении всех символов в URL-адресе.