Вопрос20
Осталось:

Что такое SQL-инъекция и как от нее защититься?

Образцовый ответ

Показывать ответ по умолчанию

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

Последствия SQL-инъекции:

  • Кража данных.
  • Удаление или изменение данных.
  • Получение административного доступа.

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

1. Параметризированные запросы (Prepared Statements):

  • Использование параметров вместо конкатенации строк.
  • СУБД автоматически экранирует специальные символы.

Пример (на языке Java с использованием JDBC)

MySQL
String sql = "SELECT * FROM users WHERE username = ? AND password = ?";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, username);
stmt.setString(2, password);
ResultSet rs = stmt.executeQuery();

2. Использование ORM (Object-Relational Mapping):

  • Библиотеки ORM часто включают механизмы защиты от SQL-инъекций.

3. Проверка и фильтрация вводимых данных:

  • Проверять данные на соответствие ожидаемому формату.
  • Использовать валидацию на стороне сервера и клиента.

4. Ограничение прав доступа:

  • Предоставлять минимально необходимые права пользователям базы данных.
  • Ограничить доступ к системным таблицам и операциям.

5. Использование хранимых процедур:

  • Логика работы с данными инкапсулирована в процедуре.
  • Пользователи имеют доступ только к процедурам, а не к таблицам напрямую.