Forum Webscript.Ru

Программирование => PHP => Тема начата: ZMeY от 06 Октября 2003, 19:50:08

Название: Include для HTML
Отправлено: ZMeY от 06 Октября 2003, 19:50:08
Я хочу подгружать в страницу с установленными стилями другой документ. примерно так:

showdoc.php?doc=data/about.html
header_style_description

include($doc);

footer_style_description
?>

Каким образом защититься от передачи в параметре doc злонамеренного скрипта?
Название: Include для HTML
Отправлено: Меняздесьдавнонет от 06 Октября 2003, 20:09:07
сделай конфиг файл, в котором пропиши соответствия неким имен и путей к файлам
about=data/about.html
в файле читай его и выводи нужную страницу.
Название: Include для HTML
Отправлено: Меняздесьдавнонет от 06 Октября 2003, 20:14:53
Да, и include делать совершенно необязательно.
пиши readfile()
Название: Include для HTML
Отправлено: Oak от 07 Октября 2003, 01:14:34
Пиши
doc=about

include("data/".$doc.".html");

но и это не спасет от doc=../../../file   :)
Название: Include для HTML
Отправлено: ZMeY от 07 Октября 2003, 15:22:12
Oak а как отфильтровать имя, что бы там были ТОЛЬКО латинские буквы и цифры?
Название: Include для HTML
Отправлено: Oak от 07 Октября 2003, 16:40:01
Есть - strspn

if(strlen($doc)!=strspn($doc,"ab.........))
 echo "Что-то не то"

Или тупо удалить все левые символы(точку, слеш, т. с запятой) с помощью strtr
Название: Include для HTML
Отправлено: ZMeY от 07 Октября 2003, 16:43:11
Я имел ввиду регулярное выражение, которое это определит
Название: Include для HTML
Отправлено: Tronyx от 07 Октября 2003, 17:43:55
Цитировать
ZMeY:
Я имел ввиду регулярное выражение, которое это определит

А какая разница?

if(!preg_match(\'/^[a-zA-Z_0-9]+\\.html$/\', $dir))
   die(\'Hacker? He-he-he...\');
Название: Include для HTML
Отправлено: Меняздесьдавнонет от 07 Октября 2003, 17:52:13
учись, студент, как НАДО делать.

$path=$data_dir."/".basename($_GET[\'doc\']).".html";
if (is_readable($path)) readfile($path);
else readfile("404.html");
Название: Include для HTML
Отправлено: Oak от 08 Октября 2003, 18:57:16
RomikChef
Но это позволяет прочитать любой .html файл, даже из  ../../ каталога. Так что проверка на Хак тоже нужна
Название: Include для HTML
Отправлено: Меняздесьдавнонет от 08 Октября 2003, 19:10:01
basename()