【问题标题】:How to add x-xss-protection header in django?如何在 django 中添加 x-xss-protection 标头?
【发布时间】:2014-11-18 13:06:57
【问题描述】:

我似乎无法将 x-xss-protection 标头添加到 HttpResponse 对象。

基本上,我希望能够覆盖 x-xss-protection: "1; mode=block;"标头,因为它在 Webkit 浏览器(Safari 和 Chrome)上给了我这个错误消息:

XSS 审核员拒绝执行“http://...”中的脚本,因为在请求中找到了它的源代码。审核员已启用,因为服务器既未发送“X-XSS-Protection”也未发送“Content-Security-Policy”标头

当我尝试在 HttpResponse 对象中添加 X-XSS-Protection http 标头时,我得到了:

得到了一个意外的关键字参数“x-xss-protection”

好像不支持x-xss-protection?!我可能做错了。

我不确定是否应该在应用程序级别 (django) 或 Web 服务器级别 (Apache/nginX) 添加它。

在我的情况下,最好直接在视图上执行,因为我不希望这个漏洞在其他 django 视图上“未被捕获”。

有什么建议吗?

【问题讨论】:

    标签: django http header


    【解决方案1】:

    @mehmet 适合添加一些信息:

    ## X-XSS-Protection
    SECURE_BROWSER_XSS_FILTER = True
    

    您还可以添加更安全的标头: 更多信息:https://docs.djangoproject.com/en/2.1/topics/security/

    ## X-Frame-Options
    X_FRAME_OPTIONS = 'DENY'
    #X-Content-Type-Options
    SECURE_CONTENT_TYPE_NOSNIFF = True
    ## Strict-Transport-Security
    SECURE_HSTS_SECONDS = 15768000
    SECURE_HSTS_INCLUDE_SUBDOMAINS = True
    SECURE_HSTS_PRELOAD = True
    
    ## that requests over HTTP are redirected to HTTPS. aslo can config in webserver
    SECURE_SSL_REDIRECT = True 
    
    # for more security
    CSRF_COOKIE_SECURE = True
    CSRF_USE_SESSIONS = True
    CSRF_COOKIE_HTTPONLY = True
    SESSION_COOKIE_SECURE = True
    SESSION_COOKIE_SAMESITE = 'Strict'
    

    【讨论】:

    • 如果 SECURE_BROWSER_XSS_FILTER 设置为 True,SecurityMiddleware 不再设置 X-XSS-Protection 标头。该设置已删除。
    【解决方案2】:

    django-secure 可以为您做到这一点。您可以通过 pip 安装它。

    要在浏览器中启用 XSS 过滤器,并强制它始终阻止可疑的 XSS 攻击,可以通过 X-XSS-Protection: 1;模式=块头。如果SECURE_BROWSER_XSS_FILTER 设置为True,SecurityMiddleware 将对所有响应执行此操作。

    http://django-secure.readthedocs.org/en/latest/middleware.html

    【讨论】:

    • 从 Django 1.4 开始,您就知道有一个点击劫持模块,它提供了几乎相同的方法/中间件。问题是我想删除 X-XSS-Protection。没有添加它。默认情况下已经添加了它
    • 我的错误非常抱歉。您是否启用了任何 CSP 规则?您可以在某处发布 http 响应标头并在此处粘贴链接吗?因为我建议您解决主要问题,而不是禁用 XSS 保护。如果您想保护您的客户端免受 XSS 攻击,这真的很有效。
    • django-secure 的功能被合并到 Django 1.8 中。如果您使用的是 1.8+,则不要使用 django-secure,而是参考“安全”Django 文档。 docs.djangoproject.com/en/1.8/ref/middleware/…
    猜你喜欢
    • 1970-01-01
    • 2012-02-23
    • 2022-06-17
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多