cleanpy 0.1.3

Python 3.12+ 最佳实践知识库 - MCP 服务器
Documentation
---
topic: owasp_injection
title: OWASP - 注入攻击防护
when_to_use: 处理用户输入和数据库查询时
keywords:
  - OWASP
  - 注入攻击
  - SQL注入
  - 安全
---

# OWASP #1: 注入攻击

## SQL 注入防护

### ❌ SQL 注入风险

```python
def get_user(user_id):
    query = f"SELECT * FROM users WHERE id = {user_id}"
    return db.execute(query)
```

### ✅ 使用参数化查询

```python
def get_user(user_id):
    query = "SELECT * FROM users WHERE id = ?"
    return db.execute(query, (user_id,))
```

### ✅ 使用 ORM

```python
from sqlalchemy import select

def get_user(user_id):
    stmt = select(User).where(User.id == user_id)
    return db.execute(stmt).scalar_one()
```

## 最佳实践

- 永远不要直接拼接用户输入到 SQL 查询
- 使用参数化查询或预编译语句
- 使用 ORM(如 SQLAlchemy)
- 对用户输入进行验证和清理

## 相关链接

- [OWASP SQL 注入]https://owasp.org/www-community/attacks/SQL_Injection
- [SQLAlchemy 安全文档]https://docs.sqlalchemy.org/en/latest/core/tutorial.html#using-textual-sql