diff --git a/static/index.css b/static/index.css index 0f433b8..91c6a9f 100644 --- a/static/index.css +++ b/static/index.css @@ -184,15 +184,15 @@ padding-top: 2rem; } -#sqlInpt { - position: relative; +.sqlInpt { margin: 3.5rem; background-color: rgb(0 0 0 / 85%); padding: 0.5rem 1.5rem; text-align: left; - width: auto; + width: clamp(40rem, 35%, 60rem); height: 22rem; transition: 1s; + display: flex; } .slideinInpt { transition: 1s; @@ -317,7 +317,7 @@ } .navigation{ - width: 18%; + width: 19.5rem; height: clamp(27rem, 65%, 39rem); padding: 0; top: 17.5%; diff --git a/static/scripts/animation.js b/static/scripts/animation.js index ddeddfb..a510e37 100644 --- a/static/scripts/animation.js +++ b/static/scripts/animation.js @@ -1,9 +1,7 @@ function showPopup() { const popup = document.getElementById("popup"); - const sqlInpt = document.getElementById("sqlInpt"); popup.classList.remove('slideoutHelp'); - sqlInpt.classList.remove('slideoutInpt'); popup.style.display = "block"; setTimeout(() => { @@ -14,10 +12,8 @@ function showPopup() { function hidePopup() { const popup = document.getElementById("popup"); - const sqlInpt = document.getElementById("sqlInpt"); - sqlInpt.classList.remove('slideinInpt'); - sqlInpt.classList.add('slideoutInpt') + popup.classList.remove('slideinHelp'); popup.classList.add('slideoutHelp'); diff --git a/templates/sql-injection.html b/templates/sql-injection.html index 1506e0b..44f63b4 100644 --- a/templates/sql-injection.html +++ b/templates/sql-injection.html @@ -1,24 +1,23 @@ {% extends 'utils/_task.html' %} {% include 'utils/_websidenav.html' %} {% block content %} -
SQL-инъекция - уязвимость системы, позволяющая пользователю ввести вредоносный код в SQL-запрос.
-
Как именно это работает? Все дело в том, что данные, которые ввёл пользователь, вставляются в запрос напрямую (пример кода с сервера ниже)
-#Как же это работает на сервере?(не стоит так делать, иначе ваш код будет иметь ту же уязвимость)
+
+ 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.
- скрыть
-
+ Так в место того, чтобы вводить свои данные, можно ввести определённые команды (как правило - вредоносные)
+ Вводим в соответствующее поле предполагаемый логин админа - admin, а часть кода с проверкой пароля, которая идёт после проверки логина, просто закомментируем знаками ";-- или "#.
+ Если мы введём admin";-- в поле логин, то наш запрос на сервер отправится вот так:
+ cursor.execute(f'SELECT * FROM Users WHERE login == "admin";--" AND password == "{password}"')
+ Соответственно вся часть после знака комментария просто не учитывается. Вы успешно вошли под логином admin.
+ скрыть
{{ error }}