{% extends '_task.html' %} {% block content %}
SQL-инъекция - уязвимость системы, позволяющая пользователю ввести вредоносный код в SQL-запрос.
Как именно это работает? Все дело в том, что данные, которые ввёл пользователь, вставляются в запрос напрямую (пример кода с сервера ниже)
#Как же это работает на сервере?(не стоит так делать, иначе ваш код будет иметь ту же уязвимость)
login = request.form['login'] # Получаем данные из окна с логином, которые пользователь ввёл в форму
password = request.form['pass'] # Так же получаем данные из окна с паролем
cursor = get_db().cursor() # Получение доступа к базе данных
cursor.execute(f'SELECT * FROM Users WHERE login == "{login}" AND password == "{password}"') # Вставляем в запрос данные от пользователя
Так в место того, чтобы вводить свои данные, можно ввести определённые команды (как правило - вредоносные) Вводим в соответствующее поле предполагаемый логин админа - admin, а часть кода с проверкой пароля, которая идёт после проверки логина, просто закомментируем знаками ";-- или "#. Если мы введём admin";-- в поле логин, то наш запрос на сервер отправится вот так:
cursor.execute(f'SELECT * FROM Users WHERE login == "admin";--" AND password == "{password}"')
Соответственно вся часть после знака комментария просто не учитывается. Вы успешно вошли под логином admin.
скрыть{{ error }}
{{ success }}