8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

发送给 Django 的请求中缺少自定义标头

hedbisker 2月前

37 0

背景:我编写了一个 Django 应用程序,现在已将其部署到 Elastic Beanstalk (AWS)。在本地开发中,我一直在使用自定义请求标头 SESSION_TOKEN,然后可以使用 r 访问它...

背景:我编写了一个 Django 应用程序,现在已将其部署到 Elastic Beanstalk(AWS)。

在本地开发中,我一直在使用自定义请求标头 SESSION_TOKEN ,然后可以使用 进行访问 request.META.get('HTTP_SESSION_TOKEN') 。在生产中,我看到错误,因为该标头不可访问(也就是说,我的 Django 服务器看到的所有请求中都缺少该标头)。

此外,我的其他标准标头工作正常,只有自定义标头缺失。请注意,我没有设置 HTTP_AUTHORIZATION ,这与 django rest_framework 中缺少授权标头的问题不同 ,是 apache 的错吗? .

出了什么问题?如何在生产中访问后端的自定义标头?

帖子版权声明 1、本帖标题:发送给 Django 的请求中缺少自定义标头
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由hedbisker在本站《django》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 最有可能的是, SESSION_TOKEN 标头被某些东西剥离了。来自 Django 安全公告 :

    当 HTTP 标头被放入 WSGI 环境中时,它们会通过转换为大写、将所有破折号转换为下划线以及在前面添加 HTTP_ 来进行规范化。例如,标头 X-Auth-User 在 WSGI 环境中会变成 HTTP_X_AUTH_USER(因此在 Django 的 request.META 字典中也是如此)。

    不幸的是,这意味着 WSGI 环境无法区分包含破折号的标头和包含下划线的标头:X-Auth-User 和 X-Auth_User 都变为 HTTP_X_AUTH_USER。这意味着,如果以安全敏感的方式使用标头(例如,从前端代理传递身份验证信息),即使代理小心地剥离 X-Auth-User 的任何传入值,攻击者也可能能够提供 X-Auth_User 标头(带下划线)并绕过此保护。

    最重要的信息是:

    为了防止此类攻击,Nginx 和 Apache 2.4+ 都默认从传入请求中删除所有包含下划线的标头。Django 的内置开发服务器现在也这样做。不建议将 Django 的开发服务器用于生产,但匹配常见生产服务器的行为可以减少部署期间行为更改的影响范围。

    如果您有任何自定义标题,则应使用连字符。

返回
作者最近主题: