Почему использование закодированных косых черт в URI представляет угрозу безопасности?

У меня есть ситуация, когда мне нужны закодированные косые черты в URI (% 2F ), но мои правила .htaccess игнорируются, когда я сделайте запрос, отправив меня вместо этого на страницу 404. Я быстро нашел директиву Apache AllowEncodedSlashes , которую планирую включить, но до сих пор не понимаю, почему это вообще представляет угрозу безопасности. Никто не мог вручную преобразовать закодированные косые черты в настоящие косые черты, если они пытались быть гнусными? (Хотя я не вижу, какой вред они могут нанести ...)

Приложение, которое я тестирую, написано на PHP, и правило mod_rewrite, которое взаимодействует с ним, выглядит так:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^test/(.*)$ /test.php?_escaped_fragment_=$1 [NE,QSA,L]

Я просто хочу убедиться Я понимаю риски, прежде чем продолжить.


Для пояснения: Apache не разрешает закодированные косые черты в пути , но они разрешены в строке запроса. Строка запроса так же восприимчива к эксплойтам, перечисленным ниже Кристианом («Удаленное выполнение кода, доступ к локальным файлам и обход каталогов»).

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

21
задан JKS 9 May 2011 в 22:20
поделиться