Инъекция — уязвимость, которая возникает, если сервис принимает пользовательский ввод и использует его в коде, запросах к базе или командах без проверки.
Если ввод не проверяется, злоумышленник может подменить его и внедрить вредоносный код. Такой код «встраивается» в работу сервиса и может позволить атакующему украсть информацию, нарушить работу системы или получить полный контроль над ней.
Посмотрим на самые распространенные виды инъекций.
SQL-инъекции. Позволяют подменять запросы к базе данных. Злоумышленник может подменить или добавить команды, чтобы получить информацию, обойти аутентификацию или изменить содержимое базы.
В этой статье рассказали о том, как работает SQL-инъекция и как ее предотвратить.
Командные инъекции. Позволяют выполнять системные команды на сервере. Если ввод пользователя подставляется в командную строку без проверки, атакующий может выполнить произвольные команды на сервере.
Cross-Site Scripting, XSS. Атака, при которой злоумышленник внедряет вредоносный код в веб-страницы. Например, если сайт не экранирует ввод пользователя, злоумышленник может вставить скрипт, который выполнится в браузере другого пользователя, что приведет к краже информации или другим вредоносным действиям.
В этой статье подробно разобрали XSS-атаки и рассказали, как от них защищаться.
Допустим, сервис позволяет пользователю войти, проверяя его логин и пароль в базе данных. Запрос может выглядеть так: