Forum Webscript.Ru
Программирование => PHP => Тема начата: ZMeY от 06 Октября 2003, 19:50:08
-
Я хочу подгружать в страницу с установленными стилями другой документ. примерно так:
showdoc.php?doc=data/about.html
header_style_description
include($doc);
footer_style_description
?>
Каким образом защититься от передачи в параметре doc злонамеренного скрипта?
-
сделай конфиг файл, в котором пропиши соответствия неким имен и путей к файлам
about=data/about.html
в файле читай его и выводи нужную страницу.
-
Да, и include делать совершенно необязательно.
пиши readfile()
-
Пиши
doc=about
include("data/".$doc.".html");
но и это не спасет от doc=../../../file :)
-
Oak а как отфильтровать имя, что бы там были ТОЛЬКО латинские буквы и цифры?
-
Есть - strspn
if(strlen($doc)!=strspn($doc,"ab.........))
echo "Что-то не то"
Или тупо удалить все левые символы(точку, слеш, т. с запятой) с помощью strtr
-
Я имел ввиду регулярное выражение, которое это определит
-
ZMeY:
Я имел ввиду регулярное выражение, которое это определит
А какая разница?
if(!preg_match(\'/^[a-zA-Z_0-9]+\\.html$/\', $dir))
die(\'Hacker? He-he-he...\');
-
учись, студент, как НАДО делать.
$path=$data_dir."/".basename($_GET[\'doc\']).".html";
if (is_readable($path)) readfile($path);
else readfile("404.html");
-
RomikChef
Но это позволяет прочитать любой .html файл, даже из ../../ каталога. Так что проверка на Хак тоже нужна
-
basename()