Автор Тема: Include для HTML  (Прочитано 4336 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ZMeY

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 54
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Include для HTML
« : 06 Октября 2003, 19:50:08 »
Я хочу подгружать в страницу с установленными стилями другой документ. примерно так:

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

include($doc);

footer_style_description
?>

Каким образом защититься от передачи в параметре doc злонамеренного скрипта?
« Последнее редактирование: 06 Октября 2003, 19:55:17 от ZMeY »

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Include для HTML
« Ответ #1 : 06 Октября 2003, 20:09:07 »
сделай конфиг файл, в котором пропиши соответствия неким имен и путей к файлам
about=data/about.html
в файле читай его и выводи нужную страницу.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Include для HTML
« Ответ #2 : 06 Октября 2003, 20:14:53 »
Да, и include делать совершенно необязательно.
пиши readfile()

Оффлайн Oak

  • Дерево
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1481
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Include для HTML
« Ответ #3 : 07 Октября 2003, 01:14:34 »
Пиши
doc=about

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

но и это не спасет от doc=../../../file   :)
[основной броузер - SeaMonkey] Netscape Communicator 4 - is the best :) // see sources

Оффлайн ZMeY

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 54
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Include для HTML
« Ответ #4 : 07 Октября 2003, 15:22:12 »
Oak а как отфильтровать имя, что бы там были ТОЛЬКО латинские буквы и цифры?

Оффлайн Oak

  • Дерево
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1481
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Include для HTML
« Ответ #5 : 07 Октября 2003, 16:40:01 »
Есть - strspn

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

Или тупо удалить все левые символы(точку, слеш, т. с запятой) с помощью strtr
[основной броузер - SeaMonkey] Netscape Communicator 4 - is the best :) // see sources

Оффлайн ZMeY

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 54
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Include для HTML
« Ответ #6 : 07 Октября 2003, 16:43:11 »
Я имел ввиду регулярное выражение, которое это определит

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
Include для HTML
« Ответ #7 : 07 Октября 2003, 17:43:55 »
Цитировать
ZMeY:
Я имел ввиду регулярное выражение, которое это определит

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

if(!preg_match(\'/^[a-zA-Z_0-9]+\\.html$/\', $dir))
   die(\'Hacker? He-he-he...\');
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Include для HTML
« Ответ #8 : 07 Октября 2003, 17:52:13 »
учись, студент, как НАДО делать.

$path=$data_dir."/".basename($_GET[\'doc\']).".html";
if (is_readable($path)) readfile($path);
else readfile("404.html");

Оффлайн Oak

  • Дерево
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1481
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Include для HTML
« Ответ #9 : 08 Октября 2003, 18:57:16 »
RomikChef
Но это позволяет прочитать любой .html файл, даже из  ../../ каталога. Так что проверка на Хак тоже нужна
[основной броузер - SeaMonkey] Netscape Communicator 4 - is the best :) // see sources

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Include для HTML
« Ответ #10 : 08 Октября 2003, 19:10:01 »
basename()

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28