Инъекция SQL - это широко распространенная атака, при проведении которой злоумышленник изменяет параметры веб-страницы (такие как данные в запросе GET/POST или в URL), чтобы ничего не подозревающее приложение выполнило неожиданный SQL-запрос к базе. Это очень опасная уязвимость. Такая уязвимость возникает, когда SQL-запрос строится вручную с использованием поступивших от пользователя данных. Представим что у нас есть форма в которую мы требуем ввести имя пользователя, чтобы узнать о нем больше. Однако в нашей функции, отвечающей за нахождение пользователя, используется прямой SQL-запрос: … user = request.GET['username']
sql = "SELECT * FROM user_data WHERE username = {}".format(user) … Подумайте, что произойдет, если злоумышленник введет в поле запроса строку " '' OR 'a'= 'a' ". Результатом станет такой SQL-запрос: SELECT * FROM user_data WHERE username = '' OR 'a' = 'a'; Поскольку мы допустили возможность добавления в строку произвольных данных, злоумышленник сумел добавить фразу OR