Что такое SQL-инъекция
Python
Middle
Без компании
Что такое SQL-инъекция
Ответы
SQL-инъекция — это уязвимость, возникающая при неправильной обработке пользовательского ввода, который затем используется в SQL-запросах. Злоумышленник может внедрить вредоносный SQL-код, что приведёт к несанкционированному доступу или изменению данных.
Пример уязвимого кода на Python с SQLite:
```
username = input("Enter username: ")
query = f"SELECT * FROM users WHERE username = '{username}'"
cursor.execute(query)
```
Если ввести `' OR '1'='1`, запрос станет:
```
SELECT * FROM users WHERE username = '' OR '1'='1'
```
Это вернёт все записи из таблицы users.
**Как защититься:**
- Используйте параметризованные запросы:
```
cursor.execute("SELECT * FROM users WHERE username = ?", (username,))
```
- Применяйте ORM (например, SQLAlchemy)
- Валидируйте и экранируйте пользовательский ввод
- Ограничивайте права доступа БД