XSS(跨站脚本攻击)是 Web 安全中常见的漏洞,攻击者通过注入恶意脚本到网页中,窃取用户数据或破坏页面功能。以下是使用 Python 开发时的防范措施:

1. 输入过滤与转义 ✅

  • 使用 html 模块:对用户输入进行 HTML 转义,防止脚本执行
    import html
    user_input = "<script>alert('XSS')</script>"
    safe_output = html.escape(user_input)  # 输出: &lt;script&gt;alert(&#39;XSS&#39;)&lt;/script&gt;
    
  • 避免直接拼接 HTML:使用模板引擎(如 Jinja2)时,确保不会误将变量作为表达式解析

2. 设置 HTTP 响应头 🔒

  • 在 Flask 中添加 Content-Security-Policy 头:
    from flask import Flask
    app = Flask(__name__)
    @app.route('/secure')
    def secure():
        return "<h1>安全页面</h1>", 200, {"Content-Security-Policy": "default-src 'self'"}
    

3. 使用安全的框架与库 🛡️

  • Django 的自动转义:模板中默认对变量进行 HTML 转义,可通过 {{ variable|safe }} 手动关闭
  • Flask-WTF 表单验证:利用 WTForms 的内置过滤器防止恶意输入

4. 防范反射型 XSS 🧠

  • 对 URL 参数进行严格校验:
    from flask import request
    def vulnerable_route():
        param = request.args.get('data')
        if param and param.strip() in allowed_values:
            return f"合法内容: {param}"
        return "非法输入", 400
    

扩展阅读 📚

XSS_Prevention
Web_Security