Я тестирую безопасность своего веб-сайта. Я использую следующий URL для загрузки страницы PHP в моем веб-сайте на localhost:
http://localhost/domain/user/index.php/apple.php
Когда я делаю это, страница не загружается обычно; Вместо этого изображения, значки, используемые на странице просто, исчезают/исчезают от страницы. Только текст появляется. И также на любой ссылке я нажимаю на эту страницу, она приносит мне к этой той же странице снова, не перейдя к необходимой странице. Таким образом, если у меня есть гиперссылки к другим страницам, таким как "ПОИСК", который указывает на search.php, вместо того, чтобы перейти к search.php странице, это обновляет index.php страницу и просто добавляет название страницы целевой страницы в конец URL.
Например, скажите, что я использовал ссылку выше. Это затем загружает index.php страницу минус изображения в, он - желание. Когда я нажимаю на "Поисковую" ссылку для навигации к странице результатов поиска, я вижу следующее в URL:
http://localhost/domain/user/index.php/search.php
Мне настроили перенаправление к 404 ошибочным страницам в моем .htaccess файле, но страница не перенаправляет к 404 ошибочным страницам. Заметьте search.php
к концу URL выше. Любая другая ссылка, на которую я нажимаю, перезагружает index.php страницу и просто добавляет целевое название страницы в конец URL как, я показал выше.
Я ожидал видеть 404 Ошибки, но этого не происходит. URL даже не должен мочь загрузить страницу, потому что у меня нет "index.php" папки в моем веб-сайте.
Что я могу сделать для решения этого? Вся справка ценится.
Проблема безопасности - то, что пользовательская способность видеть несуществующую страницу (который является довольно вводящим в заблуждение) как http://localhost/domain/user/index.php/apple.php особенно, когда она не делает, существует. Это заставляет меня чувствовать, что это собирается в открытые двери для хакеров использовать веб-сайт и поставить под угрозу его целостность. Это может произойти в таком случае? Я хочу, чтобы пользователи видели 404 ошибочных страницы и любого, который я готов к любому изменению, необходимому в .htaccess файле разместить это.
Можно ли предложить меня некоторого кода, который я могу добавить к своему .htaccess файлу для выполнения этого?
Спасибо.
EDIT1:
Вот содержание моих .htaccess файлов. У меня есть 2 из них. Один в доменном корне и другом в 'пользовательской' папке/каталоге.
/*.htaccess in domain root*/
ErrorDocument 404 /domain/404.php
/*.htaccess in user folder*/
ErrorDocument 404 /domain/user/404.php
EDIT2:
@Pekka спасибо за ссылку. Я добавил следующий код в .htaccess файле (в рамках пользовательского каталога)
Options +Includes
SetOutputFilter INCLUDES
AcceptPathInfo Off
Но все еще это не показывает мне 404 страницы. Извините, я - очень новичок с .htaccess. Надежда Вы сможете сказать мне, что я неправ.Спасибо.
Поведение, почему загружается страница:
http://localhost/domain/user/index.php/apple.php
легко объяснимо. Запрос передается на index.php
, причем apple.php
находится в переменной $_SERVER["PATH_INFO"]
.
Таким образом, вы находитесь в каталоге /user
, что касается сервера и PHP-скрипта.
Вот почему не возникает ошибка 404: index.php
всегда найден, независимо от того, какой файл вы указываете в качестве последнего.
Однако браузер интерпретирует index.php
не как файл, а как родительский каталог apple.php
.
Поэтому каждая относительная ссылка, которую вы разместите на странице, скажем, на contact.php
, будет искаться следующим образом:
http://localhost/domain/user/index.php/contact.php
что, очевидно, не будет работать.
Возможно, вы захотите использовать абсолютные пути в изображениях и ссылках, но в любом случае это не имеет никакого значения для безопасности.
В качестве примечания, все это явление иногда используется для создания дружественных поисковым системам URL без необходимости использования модуля mod_rewrite
.
Вы можете отключить это поведение с помощью директивы AcceptPathInfo
.
Что касается изображений, вам просто нужно научиться использовать абсолютные пути к вашим изображениям, что абсолютно необходимо
Просто вместо images/head.jpg
напишите /images/head.jpg
и у вас будут все ваши изображения и стили на месте.
Что касается /user/index.php/apple.php
- зачем вам такой странный адрес?
Почему бы не использовать просто user/apple.php
?
И где в вашем вопросе безопасность?