Даёт ли такая обработка защиту от межсайтового скриптинга? Если есть уязвимость, прошу указать, какая. Спасибо. Код (Text): if (isset($_GET['route'])) { $i_s = array('/', ':', 'http', '.', '<', '>', '\\'); $o_s = array('-', '-', '-', '-', '-', '-', '-'); $route = strip_tags(str_replace($i_s, $o_s, $_GET['route'])); } @is_file("./mydir/{$route}.php") ? include("./mydir/{$route}.php") : include("./mydir/home.php");
Re: Даёт ли такая обработка защиту от межсайтового скриптинг 1. зачем здесь "собака"? 2. воспользуйся "белым списком", это 100% решение
Re: Даёт ли такая обработка защиту от межсайтового скриптинг >>1. зачем здесь "собака"? Чтобы избежать предупреждения, а настройки менять не хочу, нравится именно так. Notice: Undefined variable: route in C:\www\Apache2\htdocs\v\source.php on line 41 >>2. воспользуйся "белым списком", это 100% решение Можно подробнее? Что за белый список?
Re: Даёт ли такая обработка защиту от межсайтового скриптинг это нехорошая ситуация и прятаться от нее не надо. иначе пи*ц неизбежен! а интуитивно непонятно? ищи слова "белый список" здесь: http://php.ru/manual/security.filesystem.nullbytes.html замени switch-case на $x = array() и if (in_array()), возможно так будет красивей.
Re: Даёт ли такая обработка защиту от межсайтового скриптинг Сами поняли, что сказали? Что вы там менять собрались? Это Notice говорит о том, что переменная не была определена ранее... Застреите собаку и выше всего кода напишите: $route=''; Или тогда проверяйте isset или empty.
Re: Даёт ли такая обработка защиту от межсайтового скриптинг artoodetoo, спасибо за белый список. Хорошее решение. Your, полностью согласен. Спасибо.
Примерно должно было выглядеть так. Код (PHP): $dir='./mydir/'; if(isset($_GET['route'])) { $i_s=array('/', ':', 'http', '.', '<', '>', '\\'); $o_s=array('-', '-', '-', '-', '-', '-', '-'); $route=strip_tags(str_replace($i_s, $o_s,$_GET['route'])); } if(!empty($route)) { $route=$dir.$route.'.php'; if(file_exists($route)) { require_once $route; } else { echo'Страница '.basename($route).' не найдена!'; } } else { require_once $dir.'home.php'; } Хотя я бы советовал делать примерно так: Код (PHP): $dir='./mydir/'; if(!empty($_GET['route'])) { $route=$dir.$_GET['route'].'.php'; if(file_exists($route)) { require_once $route; } else { echo'Файл '.basename($route).' не найден!'; } } else if(file_exists($dir.'home.php')) { require_once $dir.'home.php'; } else { echo'Файл home.php не найден!'; } А вообще еще лучше сделать отдельный контроллер страниц, чтобы не заморачиваться с проверками isset, empty и проверкой путей...
Re: Даёт ли такая обработка защиту от межсайтового скриптинг А если так Код (Text): if (isset($_GET['route']) and $_GET['route']=='') { ...