Способы защиты от sql инъекций

Sql injection - Внедрения sql кода в запрос.
Данная уязвимость позволяет выполнить почти любой sql запрос и получить информацию о базах, таблицах и данных.
Что в итоге приведёт получения таблицы с пользователям и расшифровке ихних паролей.
Для защиты от sql мы должны фильтровать входные данные $_POST запроса, $_GET запроса, сессий($_SESSION) и кук($_COOKIE).
Примечания: в обычном виде опасность не несёт, но если используется в sql запросах то нужно получаемые данные отфильтровать.
Для защиты от sql инъекций используйте функцию mysql_real_escape_string
Пример:
mysql_query("SELECT * FROM table WHERE url='".mysql_real_escape_string($_GET['url'])."'");

Функция str_replace:
str_replace("'","\'", $_GET['url']);

Можно написать одну функцию:
function safe($var){
         
        if(is_array($var)){
             
            foreach($var as $k => $v){
                 
                if(is_array($k))
                    $res[safe($k)] = str_replace("'","\'",htmlspecialchars($v));
                elseif(is_array($v))   
                    $res[str_replace("'","\'",htmlspecialchars($k))] = safe($v);
                elseif(is_array($k) and is_array($v))  
                    $res[safe($v)] = safe($k);
                    else
                        $res[str_replace("'","\'",htmlspecialchars($k))] = str_replace("'","\'",htmlspecialchars($v));
            }
             
        }
        else $res = str_replace("'","\'",htmlspecialchars($var));
        return $res;
    }

Данная функция защит вас также от xss уязвимости, но чтобы она вас защитила вам нужно прописать с верху файла index.php саму функцию и этот код.
$_POST = safe($_POST);
$_GET = safe($_GET);
$_SESSION = safe($_SESSION);

Если вы пропишите данный код, то вам не нужно больше писать не где функцию для защиты от sql.
Теги:
SQL инъекции
Добавлено: 20 Мая 2018 21:25:47 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...