cleanpy 0.1.3

Python 3.12+ 最佳实践知识库 - MCP 服务器
Documentation
---
topic: owasp_auth
title: OWASP - 破损的认证防护
when_to_use: 实现用户认证和会话管理时
keywords:
  - OWASP
  - 认证
  - 会话管理
  - 安全
---

# OWASP #2: 破损的认证

## 密码存储

### ❌ 纯文本密码

```python
def create_user(username, password):
    user = User(username=username, password=password)
    db.save(user)
```

### ✅ 密码哈希 - Werkzeug

```python
from werkzeug.security import generate_password_hash, check_password_hash

def create_user(username, password):
    hashed = generate_password_hash(password)
    user = User(username=username, password_hash=hashed)
    db.save(user)

def verify_password(user, password):
    return check_password_hash(user.password_hash, password)
```

### ✅ 使用 bcrypt

```python
import bcrypt

def hash_password(password: str) -> bytes:
    return bcrypt.hashpw(password.encode(), bcrypt.gensalt())

def verify_password(password: str, hashed: bytes) -> bool:
    return bcrypt.checkpw(password.encode(), hashed)
```

## 最佳实践

- 永远不要存储明文密码
- 使用强哈希算法(bcrypt, Argon2)
- 实施多因素认证
- 设置密码强度要求
- 实施账户锁定机制

## 相关链接

- [OWASP 认证备忘单]https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html
- [bcrypt 文档]https://pypi.org/project/bcrypt/