Гайд [SQL Инъекция] - Инъекция в бд сайта, что это и как предохраняться от нее

Эксперт
Статус
Оффлайн
Регистрация
22 Фев 2018
Сообщения
1,902
Реакции[?]
532
Поинты[?]
3K
SQL Инъекция - это способ получения информации из базы данных. Злоумышленники применяют его для вставки SQL-запроса в адресную строку, который затем обрабатываются SQL-ем.

Вообщем: Это метод, благодаря которому, пользователь может отправить вместе с планируемыми вами данными для отправки из формы, незапланированные, благодаря чему - получить доступ, как максимум, к полной базе данных. Как многие из пользователей, возможно, знают, незапланированные вещи часто приносят удовольствие, или радость - поэтому нужно предохраняться, друзья.

Рассказывать, как использовать эту штуку я не буду. Есть достаточно гайдов в YouTube - там это будет нагляднее.

Однако, базовые моменты по предотвращению SQL Инъекции на вашем сайте лучше знать, чем не знать. Всегда лучше, если при встрече с "хакером" у вас в кармане будет защита.

1. Использование PDO
Данный способ выделяется на фоне остальных и считается наиболее актуальным, так как при его использовании, запрос выполняется поэтапно. Сначала производится подключение к базе, потом подготавливается запрос, затем отдельно указываются переменные, а уже затем, выполняется сам запрос. Все данные из полей отправляются уже в виде переменных. Следовательно, если бы в "запросе" человек поставил лишнюю кавычку, сервер бы не подумал, что она — часть запроса. Поэтому попытка испортить запрос через переменную не сработала бы.

Примеры использования PDO:
PHP:
$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name');

$stmt->execute([ 'name' => $name ]);

foreach ($stmt as $row) {

}
Правильное подключение к бд (PDO):
PHP:
$dbConnection = new PDO('mysql:dbname=dbtest;host=127.0.0.1;charset=utf8', 'user', 'password');

$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

2. Права пользователей в БД
Мало кто в наше время в "небольших проектах" считает это нужным. Ну и зря. Права надо выдавать обязательно, это доставит определенные неудобства пользователю, который захочет получить доступ к вашим бд. Делается нетрудно - туториалы в YouTube, или логика. Просто заходите в phpmyadmin и при добавлении нового юзера даете ему соответственные права.

2. Не используйте C+P код с форумов, или опенсурс проекты
Это сугубо отличительная черта, которая позволяет вам задуматься, что же там твориться у человека в голове. Если он просто скопировал код с другого прокета и не изменил (даже) логику и названия переменных для сайта с данными - это беда.

3. GET
Надеюсь, тут уже все понятно, гет возможен только на стадии разработки - не более, в ином случае, подскажите человеку, что он просто перепутал последнюю букву.

Жизнь хороша у человека до осознания того, что DROP бд произошел не так давно
 
Последнее редактирование:
Пользователь
Статус
Оффлайн
Регистрация
30 Янв 2018
Сообщения
174
Реакции[?]
60
Поинты[?]
0
3. GET
Надеюсь, тут уже все понятно, гет возможен только на стадии разработки - не более, в ином случае, подскажите человеку, что он просто перепутал последнюю букву.
А что не так с гетом?) При условии что там не пароли летают, конечно.

Просто заходите в phpmyadmin
А лучше вообще им не пользоваться) Если так сильно нужен визуальный редактор, добавьте свой айпишник в исключения файрволла на серваке и подключайтесь через условный heidi



И не забываем что для названий таблиц prepared statements не работают, нужна ручная проверка на наличие во множестве
 
Забаненный
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
46
Реакции[?]
40
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
весьма познавательный материал, спасибочки
 
Эксперт
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
1,417
Реакции[?]
656
Поинты[?]
16K
Пожалуйста, авторизуйтесь для просмотра ссылки.
(no ad)

Читаешь, понимаешь и вперед
Зачем ты заходишь в тему с гайдом, и кидаешь ссылку на помойный сайт, если тут блять полноценный гайд написан, просто нахуя, давай я сейчас зайду на тему с исходниками сервера, перекину их в пастбин и отправлю тудаже ?! Что за ебаный идеотизм.
 
Начинающий
Статус
Оффлайн
Регистрация
21 Мар 2022
Сообщения
5
Реакции[?]
0
Поинты[?]
0
Пользуйтесь популярными ORM, в них уже все предусмотрено, не пишите велосипеды на то, что уже сделано хорошо.
 
Пользователь
Статус
Оффлайн
Регистрация
30 Янв 2018
Сообщения
174
Реакции[?]
60
Поинты[?]
0
Пользуйтесь популярными ORM, в них уже все предусмотрено, не пишите велосипеды на то, что уже сделано хорошо.
Каким образом орм связан с инъекциями?) Не буду отдельно писать почему орм это далеко не всегда хорошо и красиво, уточню только что в большинстве из них нет защиты от инъекций в table поле
 
Сверху Снизу