Найти в Дзене
deweb

Защита базы данных. Защита от SQL-инъекций

Неэффективные способы защиты от SQL-инъекций Если вы не обеспечиваете защиту от SQL инъекций и передаете данные, полученные от пользователя, непосредственно в SQL запрос, это считается наиболее опасным и нежелательным подходом. Так делать нельзя! Необходимо всегда проводить фильтрацию и/или валидацию любых данных перед их использованием в SQL-запросе. Функция htmlspecialchars() Функция htmlspecialchars() представляет опасность, поскольку она не экранирует опасные символы, такие как слеш (\), null-байт (\0) и backspace (\b). Функция addslashes() Эта функция предлагает более надежную защиту от SQL инъекций, чем htmlspecialchars(), так как она учитывает экранирование обратного слеша и нулевого байта. Однако, она не является наилучшим вариантом по сравнению с mysql_real_escape_string, так как не учитывает кодировку текущего соединения с базой данных. Поэтому, для защиты от SQL инъекций, не рекомендуется использовать данную функцию. Эффективные способы защиты Функция mysql(i)_real_escape_st
Оглавление
Защита базы данных. Защита от SQL-инъекций | deweb
Защита базы данных. Защита от SQL-инъекций | deweb

Неэффективные способы защиты от SQL-инъекций

Если вы не обеспечиваете защиту от SQL инъекций и передаете данные, полученные от пользователя, непосредственно в SQL запрос, это считается наиболее опасным и нежелательным подходом.

Защита базы данных. Защита от SQL-инъекций | deweb
Защита базы данных. Защита от SQL-инъекций | deweb

Так делать нельзя! Необходимо всегда проводить фильтрацию и/или валидацию любых данных перед их использованием в SQL-запросе.

Функция htmlspecialchars()

Функция htmlspecialchars | deweb
Функция htmlspecialchars | deweb

Функция htmlspecialchars() представляет опасность, поскольку она не экранирует опасные символы, такие как слеш (\), null-байт (\0) и backspace (\b).

Функция addslashes()

Эта функция предлагает более надежную защиту от SQL инъекций, чем htmlspecialchars(), так как она учитывает экранирование обратного слеша и нулевого байта. Однако, она не является наилучшим вариантом по сравнению с mysql_real_escape_string, так как не учитывает кодировку текущего соединения с базой данных.

Поэтому, для защиты от SQL инъекций, не рекомендуется использовать данную функцию.

Эффективные способы защиты

Функция mysql(i)_real_escape_string

Функция mysql(i)_real_escape_string | deweb
Функция mysql(i)_real_escape_string | deweb

Функция работает аналогично addslashes(), но учитывает текущую кодировку соединения с базой данных.

  • Необходимо всегда заключать экранированные данные в кавычки, иначе экранирование будет бесполезным.
  • Тех, кто использует сп ецифические кодировки, такие как GBK, подстерегает опасность. В этом случае при установке соединения с базой обязательно указывать кодировку.

Приведение к числу

Приведение к числу | deweb
Приведение к числу | deweb

Простой и эффективный способ защиты для числовых полей - преобразование данных в числовой формат.

Подготовленные запросы

Один из лучших способов защиты от SQL инъекций

Подготовленные запросы | deweb
Подготовленные запросы | deweb

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

Но в этом способе есть свои недочеты.

Готовые библиотеки

Для небольших проектов можно использовать Medoo или RedBeanPHP. Для средних проектов рекомендуем использовать Eloquent. А для крупных проектов наилучшим выбором будет мощная и надежная Doctrine.

О нас

Наш проект существует и развивается и в других социальных сетях!

В нашем телеграме вы узнаете больше о веб разработке!

t.me/dewebme