У меня есть ситуация, когда я хочу закодированные косые черты в 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) должен быть проверен перед использованием его в любой функции базы данных или файловой системы.