Вопрос №20
Осталось:
Что такое SQL-инъекция и как от нее защититься?
Образцовый ответ
Показывать ответ по умолчанию
SQL-инъекция — это метод атаки на базу данных, при котором злоумышленник вставляет вредоносный SQL-код через вводимые данные, позволяя выполнять несанкционированные SQL-запросы.
Последствия SQL-инъекции:
- Кража данных.
- Удаление или изменение данных.
- Получение административного доступа.
Способы защиты от SQL-инъекций:
1. Параметризированные запросы (Prepared Statements):
- Использование параметров вместо конкатенации строк.
- СУБД автоматически экранирует специальные символы.
Пример (на языке Java с использованием JDBC)
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. Использование хранимых процедур:
- Логика работы с данными инкапсулирована в процедуре.
- Пользователи имеют доступ только к процедурам, а не к таблицам напрямую.