Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Защита PHP скрипта - простенькая))
 
 автор: nikolayers   (24.01.2011 в 23:09)   письмо автору
 
 

Есть переменная:
$page=intval($_GET['page']);

Можно ли смело подключать инклуд???

$inc=include($page);
if($inc!=true)
{
$inc='1.php'; // Если инклуд не сработал, значит грузим главную страницу
}

  Ответить  
 
 автор: Trianon   (24.01.2011 в 23:12)   письмо автору
 
   для: nikolayers   (24.01.2011 в 23:09)
 

Попробуйте :)

  Ответить  
 
 автор: cheops   (25.01.2011 в 12:36)   письмо автору
 
   для: nikolayers   (24.01.2011 в 23:09)
 

Лучше не стоит... такой include позволяте выполнить произвольный PHP-код, который можно расположить на стороннем хосте. По сути вы отдаете управление сайтом любому встречному-поперечному и даете ему полномочия для удаления файлов, извлечения паролей и т.п.

  Ответить  
 
 автор: Trianon   (25.01.2011 в 13:24)   письмо автору
 
   для: cheops   (25.01.2011 в 12:36)
 

как можно подключить произвольный код, передав include в качестве параметра лишь строку цифр (не то что без пути, но даже без расширения имени файла)?

Если, конечно, не допускать загрузки файлов с произвольным именем в каталог с исполняемым скриптом.

  Ответить  
 
 автор: cheops   (25.01.2011 в 13:27)   письмо автору
 
   для: Trianon   (25.01.2011 в 13:24)
 

А... intaval() не заметил, тогда, да, опасности нет.

  Ответить  
 
 автор: Косорылый   (25.01.2011 в 17:00)   письмо автору
 
   для: nikolayers   (24.01.2011 в 23:09)
 

Наверно правильнее будет
<?
define
('DS',DIRECTORY_SEPARATOR);
define('ROOT_PATH',realpath(dirname(__FILE__)).DS); 

$page=!empty($_GET['page']) ? intval($_GET['page']) : NULL;
$path_file is_file(ROOT_PATH.$page.'.php') ? ROOT_PATH.$page.'.php' ROOT_PATH.'1.php';
include(
$path_file);


но лучше делать условие через оператор switch-case
или использовать __autoload( ) для подгрузки нужного контроллера
$_GET['page'] пропустить через trim( ) для очистки от пробелов

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования