PHP, MYSQL: Проблема безопасности; Страница загружается странным способом

Я тестирую безопасность своего веб-сайта. Я использую следующий 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. Надежда Вы сможете сказать мне, что я неправ.Спасибо.

1
задан Bill the Lizard 1 June 2010 в 12:52
поделиться

2 ответа

Поведение, почему загружается страница:

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 .

2
ответ дан 3 September 2019 в 00:12
поделиться

Что касается изображений, вам просто нужно научиться использовать абсолютные пути к вашим изображениям, что абсолютно необходимо

Просто вместо images/head.jpg напишите /images/head.jpg и у вас будут все ваши изображения и стили на месте.

Что касается /user/index.php/apple.php - зачем вам такой странный адрес?
Почему бы не использовать просто user/apple.php?

И где в вашем вопросе безопасность?

0
ответ дан 3 September 2019 в 00:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: