РЕШЕНО! - Фильтрация URL на PHP
CryptoXer
06 Сентября, 2023
На чтение 1 мин., 40 сек.
4
Добрый день. Помогите новичку. Подскажите как проверять и защищать URL, POST и GET-параметры?
P:S. Мой сайт был недавно взломан. Через гугл я узнал, что это жертва уколов сайта.
P:S. Мой сайт был недавно взломан. Через гугл я узнал, что это жертва уколов сайта.
Ответ:
Здравствуйте. Как правило разработчики популярных библиотек наверняка гораздо умней и опытней нас.
Они давно всё продумали и протестировали на десятках тысяч программистов, но тем не менее когда дело доходит до безопасности приложений, важно заботиться не только о железе и операционной системе, но и о написании защищённых скриптов.
Ниже предоставляю решение которое поможет обеспечить безопасность вашего приложения и сделать его менее уязвимым.
Они давно всё продумали и протестировали на десятках тысяч программистов, но тем не менее когда дело доходит до безопасности приложений, важно заботиться не только о железе и операционной системе, но и о написании защищённых скриптов.
Ниже предоставляю решение которое поможет обеспечить безопасность вашего приложения и сделать его менее уязвимым.
Пояснения к решению
1. Сначала получаем URL
Пример: https://example.com/param_1/param_2?param_3=param_4
$url = $_SERVER['REQUEST_URI'];
echo $url;
Пример: https://example.com/param_1/param_2?param_3=param_4
$url = $_SERVER['REQUEST_URI'];
echo $url;
2. Решение: Фильтруем данные
<?php
/* функция фильтрации данных */
function val_filter($var, $disallow){
$spl = explode("/", $var);
foreach($spl as $item){
if(!empty($item))
$arr[] = trim(str_replace($disallow, '', mb_strtolower($item)));
}
return $arr;
}
?>
/* функция фильтрации данных */
function val_filter($var, $disallow){
$spl = explode("/", $var);
foreach($spl as $item){
if(!empty($item))
$arr[] = trim(str_replace($disallow, '', mb_strtolower($item)));
}
return $arr;
}
?>
Получаем ответ:
array(7) {
[0]=> string(7) "param_1"
[1]=> string(23) "param_2?param_3=param_4"
}
array(7) {
[0]=> string(7) "param_1"
[1]=> string(23) "param_2?param_3=param_4"
}
Фильтрация для SQL запросов:
Очень часто при работе с кодом других PHP разработчиков натыкаюсь на множество участков кода,
где происходит обращение для какой либо манипуляции к БД и это обращение НИКАК не защищено от SQL инъекций.
Все символы, входящие в чёрный список, удаляются из строки перед вставкой в базу.
$query = "SELECT * FROM `users` WHERE `name` = '$arr_params[0]'";
var_dump($query);
Если у вас остались вопросы пишите: @Sandr12 (Telegram)
Все символы, входящие в чёрный список, удаляются из строки перед вставкой в базу.
$query = "SELECT * FROM `users` WHERE `name` = '$arr_params[0]'";
var_dump($query);
Если у вас остались вопросы пишите: @Sandr12 (Telegram)
/* функция фильтрации данных */
function val_filter($var, $disallow){
$spl = explode("/", $var);
foreach($spl as $item){
if(!empty($item))
$arr[] = trim(str_replace($disallow, '', mb_strtolower($item)));
}
return $arr;
}
// получаем URL
// Пример: https://example.com/param_1/param_2?param_3=param_4
$url = $_SERVER['REQUEST_URI'];
// запрещаем символы нежелательные
$filter = array('~', '\'', '"', '<', '>', '.', '%');
// Фильтрация для URL
$arr_params = val_filter($url, $filter);
// выводим результат в виде массива
var_dump($arr_params);
// Фильтрация для SQL запросов
$query = "SELECT * FROM `users` WHERE `param_1` = '$arr_params[0]'";
var_dump($query);
?>