什么是 CSRF?

CSRF(跨站请求伪造)是一种攻击手段,攻击者通过伪装合法用户请求,窃取其身份执行非预期操作。例如:用户登录后,攻击者诱导其点击恶意链接,可能完成支付或修改设置。


常见防御方法

1. 验证令牌(CSRF Token)

  • 在表单中添加随机生成的 token 字段
  • 服务端验证 token 是否匹配
  • ✅ 示例代码:
    from flask import Flask, session, request
    
    app = Flask(__name__)
    app.secret_key = 'your_secret_key'
    
    @app.route('/submit', methods=['POST'])
    def submit():
        token = request.form.get('csrf_token')
        if token != session.get('csrf_token'):
            return '无效的 CSRF 令牌', 403
        # 处理请求逻辑
    

2. 双重提交 Cookie

  • 服务端将 token 存入 Cookie 和请求头
  • 通过对比两者实现验证
  • 🔒 优点:避免 token 暴露在 URL 中

3. SameSite 属性

  • 设置 Cookie 的 SameSite=StrictLax
  • 🚫 阻止跨站请求携带 Cookie
  • 示例:
    response.set_cookie('session_id', 'abc123', samesite='Strict')
    

实战建议

  • 使用 Flask-WTF 等库自动处理 token
  • 配合 HTTPS 加强传输安全🔒
  • 定期更新安全策略🔄

扩展阅读

如需深入了解 Web 安全,可参考 Python Web 安全最佳实践