Встречается на собеседованиях • сегодня

Как работает SQL Injection

SQL Injection — это атака, при которой злоумышленник вставляет вредоносный SQL-код в запрос, изменяя его логику. Это возможно, если приложение некорректно обрабатывает пользовательский ввод.

Пример уязвимого кода:

java
String username = request.getParameter("username");
String password = request.getParameter("password");
String query = "SELECT * FROM users WHERE username='" + username + "' AND password='" + password + "'";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(query);

Атака:
Если ввести admin' -- в поле username, запрос превратится в:

sql
SELECT * FROM users WHERE username='admin' --' AND password='...'

-- закомментирует оставшуюся часть запроса, позволяя войти без пароля.

Защита:

  1. Prepared Statements (лучший способ):
java
String query = "SELECT * FROM users WHERE username=? AND password=?";
PreparedStatement stmt = connection.prepareStatement(query);
stmt.setString(1, username);
stmt.setString(2, password);
  1. Валидация и санитизация ввода.
  2. ORM (Hibernate, JPA) с параметризованными запросами.
  3. Минимальные привилегии для БД.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы