Рейтинг:0

Ошибка Apache 404 с /boot.ini%2500.htm

флаг ph

Почему-то следующий htaccess будет перенаправить на страницу 404, если проверенный URL-адрес /boot.ini.htm но нет если это /boot.ini%2500.htm.

Что мне нужно изменить, чтобы это заработало, или это ошибка?

Опции Все -Индексы
Опции +FollowSymlinks

Документ об ошибке 403 /сайт/404
Документ об ошибке 404 /сайт/404

RewriteEngine включен

Правило перезаписи ^(шрифты)($|/) - [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
Правило перезаписи ^ %1 [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Правило перезаписи ^([\s\S]*)$ index.php/$1 [L,NC,QSA]

# Убедитесь, что заголовок авторизации передается
RewriteCond %{HTTP:Авторизация} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Авторизация}]

Подпись сервера выключена

php_value memory_limit 256M

Мой сервер:

Версия сервера: Apache/2.4.41 (Ubuntu)

Сервер построен: 2021-06-17T18:27:53

флаг kz
"изменить, чтобы заставить это работать" - каков желаемый результат? Существует ли `/boot.ini.htm` в виде физического файла? Существует ли `/boot.ini%00.htm` (т.е. URL-адрес `/boot.ini%2500.htm` декодирован)? Каков ответ на запрос `/boot.ini%2500.htm`? В вашем файле `.htaccess` нет ничего, что специально предназначалось бы для этих запросов. Кстати, ваши директивы расположены в неправильном порядке... последнее правило, касающееся авторизации, должно стоять перед предыдущим правилом (переднего контроллера) (хотя это не имеет ничего общего с вашей текущей проблемой).
Antony avatar
флаг ph
Спасибо - извините, если я не был ясен. Я просто хочу, чтобы он перенаправлял на страницу 404. Нет — ни boot.ini.htm, ни boot.ini%00.htm не существуют. Таким образом, я бы подозревал, что ErrorDocument 404 сделал бы это.
флаг kz
Итак, какой ответ (и статус HTTP) вы на самом деле получаете, когда запрашиваете `/boot.ini%2500.htm`? Потенциальная проблема с вашим пользовательским 404 `ErrorDocument` заключается в том, что вы, по-видимому, передаете запрос 404 через свою структуру PHP (при условии, что MultiViews не включен и `/site/404.php` не существует?) - поэтому любой ответ, который вы видите, может также зависеть от вашей структуры.
флаг kz
Как насчет запроса `/something%2500else`? ответ такой же?
Antony avatar
флаг ph
Да, я вижу значок Codeigniter в названии вкладки, поэтому я думаю, что он фильтруется, но без %2500 CI обрабатывает его правильно.
Antony avatar
флаг ph
Ваш пример /something%2500else также приводит к странице 404, но с иконкой CI, предполагающей, что она может быть передана
флаг kz
Фавикон (на вкладке) постоянно кэшируется браузером, поэтому это не обязательно что-то значит. Какой фактический ответ вы видите в браузере - это ответ, сгенерированный сервером/Apache? Ответ об ошибке по умолчанию? Пустая страница? Каков код состояния HTTP ответа (проверьте вкладку сети в инструментах разработчика браузера)... это 404, 200, 406, ??? Ответ может быть от правила mod_security или чего-то еще?
флаг kz
«/something%2500else» также приводит к странице 404» — это то же самое, что и «/boot.ini%2500.htm», или другое? Попробуйте также `/something%2500.htm`.
Antony avatar
флаг ph
Во всех случаях (включая последний /something%2500.htm) я вижу ответ Apache 404 по умолчанию с заголовком «404 не найден» и «Не найдено: запрошенный URL-адрес не найден на этом сервере». как тело
флаг kz
У вас есть доступ к конфигу сервера?
Antony avatar
флаг ph
Да сервер полностью мой
флаг kz
В таком случае, что такое конфигурация сервера/виртуального хоста? Какие модули у вас загружены? правила mod_security? Брандмауэр? (Кроме того: если это ваш сервер, то почему вы так много делаете в `.htaccess`?)
Рейтинг:0
флаг kz

Во всех случаях я вижу ответ Apache 404 по умолчанию.

В этом случае запрос явно не обрабатывается Codeigniter. Похоже, что ошибка 404 инициируется сервером Apache до .htaccess даже обрабатывается. Вполне вероятно, что это вызвано чем-то вроде mod_security (может быть некоторая подсказка в заголовках ответа HTTP).

URL-адреса, содержащие % потенциально может представлять угрозу безопасности. Так что не обязательно было бы так уж необычно иметь на сервере общее правило, которое просто блокирует эти запросы. Если у вас нет доступа к конфигурации сервера в той или иной форме, маловероятно, что вы сможете что-либо сделать, чтобы повлиять на это.

Но он уже возвращает 404. А 404 в конце концов есть 404, так что для ботов это не будет иметь никакого значения. И настоящий пользователи никогда не должны делать такие запросы в любом случае.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.