Intereting Posts
Существует ли какое-либо событие «pre login» или подобное? RNCryptor AES256 соответствует PHP MCRYPT_RIJNDAEL_256 Как вернуть массив из функции jQuery ajax success и использовать его в цикле? Загрузка файла через PHP не работает Заменить ключи массива значением из другого массива Отображение введенного текста с эхом после ввода PHP удаление последних 3 символов в файле (расширение файла) Facebook CurlException: 6: Не удалось разрешить хост 'graph.facebook.com' Вызов PHP-документа с SSH включает в себя получение переменной Отобразить меню WordPress на определенных страницах Сократите URL, удалив пустые переменные GET и упростив имена переменных Как динамически обрабатывать роли | разрешения в Symfony2 на уровне базы данных: операции CRUD над ними Как разместить div в пользовательском месте на странице Ошибка Print_r () в PHP error_log () не работает. (непечатаемые символы) WordPress включает («../../../ wp-blog-header»); провал

Как я могу дезинформировать свои заявления о включении?

Как очистить это, чтобы пользователи не могли вытаскивать страницы за пределами локального домена?

<?php if(!empty($_GET['page'])) { include($_GET['page']); } else { include('home.php'); } ?> 

Самый безопасный способ – перечислить белые страницы:

 $page = 'home.php'; $allowedPages = array('one.php', 'two.php', ...); if (!empty($_GET['page']) && in_array($_GET['page'], $allowedPages)) $page = $_GET['page']; include $page; 

 // получить абсолютное имя файла страницы, которую мы хотим видеть
 $ page = realpath ($ _ GET ['page']);

 // получить каталог, в котором находятся страницы.
 $ mydir = dirname (__ FILE__);

 // видеть, включена ли включенная страница внутри этого разрешенного каталога
 if ($ page === false || substr ($ page, 0, strlen ($ mydir)! = $ mydir) {
  умереть («уйти от хакера»);
 } else {
  включить $ page;
 } 

Это не проверено. Я просто написал это быстро, но он должен работать (я надеюсь), и это определенно даст вам основу для начала.

 define('DEFAULT_PAGE', 'home.php'); define('ALLOWED_PAGES_EXPRESSION', '^[\/]+\.php$|^[\/]+\.html$'); function ValidateRequestedPage($p) { $errors_found = False; // Make sure this isn't someone trying to reference directories absolutely. if (preg_match('^\/.+$', $p)) { $errors_found = True; } // Disable access to hidden files (IE, .htaccess), and parent directory. if (preg_match('^\..+$', $p)) { $errors_found = True; } // This shouldn't be needed for secure servers, but test for remote includes just in case... if (preg_match('.+\:\/\/.+', $p)) { $errors_found = True; } if (!preg_match(ALLOWED_PAGES_EXPRESSION, $p)) { $errors_found = True; } return !$errors_found; } if (!isset($_GET['page'])) { $page = DEFAULT_PAGE; } else { $page = $_GET['page']; } if ( !ValidateRequestedPage($page) ) { /* This is called when an error has occured on the page check. You probably want to show a 404 here instead of returning False. */ return False; } // This suggests that a valid page is being used. require_once($page); 

Просто используйте оператор switch.

Проверьте, установлен ли параметр $ _GET var, а затем запустите его в случаях и по умолчанию перейдите в home.php