[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как запретить слеш и точку?
Lona
Здравствуйте. У меня проблема с кодом. При запросе site.ru/index.php?evil=../../ect/passwd можно читать файлы на сервере. Мне нужно что бы нельзя было выходить выше главной директории. В общем, как запретить слеш и точку (../) ? user posted image
Спасибо!



Спустя 36 минут, 49 секунд (11.09.2010 - 17:48) FatCat написал(а):
Не надо отдавать напрямую GET-переменные скрипту.
Оптимальный вариант - хранить список разрешенных к просмотру файлов в БД, а через GET передавать айдишник или симлинк нужного файла.

Спустя 2 часа, 56 минут, 2 секунды (11.09.2010 - 20:44) Dingo написал(а):
$evil = $_GET['evil'];
if (preg_match("/^[A-B0-9А-Я]+$/",strtoupper($_GET['evil']))
{
//ваш код
}
else echo 'Извините, но такая страница не найдена!';

Да и вообще это простейшая фильтрация данных, читайте книжки.

P.S: Пример не проверял biggrin.gif Если не работает я не причем


Цитата (FatCat @ 11.09.2010 - 14:48)
Оптимальный вариант - хранить список разрешенных к просмотру файлов в БД, а через GET передавать айдишник или симлинк нужного файла.

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

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.