SQL-инъекция — это уязвимость безопасности, которая позволяет злоумышленнику внедрить вредоносный SQL-код в запрос к базе данных.
Это происходит, когда приложение строит SQL-запросы, используя полученные от пользователя данные напрямую, без должной санитарной обработки или параметризации. Злоумышленник может манипулировать этими данными так, чтобы изменить логику SQL-запроса, получить доступ к конфиденциальным данным, изменить или удалить их, или даже выполнить команды операционной системы.
Пример уязвимого кода:
java
Если злоумышленник введет в поле username
' OR '1'='1
, а в поле password
что угодно, запрос примет вид:
sql
Условие '1'='1'
всегда истинно, что может привести к обходу аутентификации и получению доступа ко всем записям в таблице users
.
Меры предотвращения:
Использование подготовленных выражений (Prepared Statements): Это основной и наиболее эффективный метод. С их помощью параметры запроса передаются отдельно от самого SQL-кода. База данных обрабатывает параметры как данные, а не как части команды SQL.
java
SQL-инъекция — это уязвимость безопасности, которая позволяет злоумышленнику внедрить вредоносный SQL-код в запрос к базе данных.
Это происходит, когда приложение строит SQL-запросы, используя полученные от пользователя данные напрямую, без должной санитарной обработки или параметризации. Злоумышленник может манипулировать этими данными так, чтобы изменить логику SQL-запроса, получить доступ к конфиденциальным данным, изменить или удалить их, или даже выполнить команды операционной системы.
Пример уязвимого кода:
java
Если злоумышленник введет в поле username
' OR '1'='1
, а в поле password
что угодно, запрос примет вид:
sql
Условие '1'='1'
всегда истинно, что может привести к обходу аутентификации и получению доступа ко всем записям в таблице users
.
Меры предотвращения:
Использование подготовленных выражений (Prepared Statements): Это основной и наиболее эффективный метод. С их помощью параметры запроса передаются отдельно от самого SQL-кода. База данных обрабатывает параметры как данные, а не как части команды SQL.
java
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.