【问题标题】:Django - How to hide Server [HTTP Response header] parameter in middleware file?Django - 如何在中间件文件中隐藏服务器 [HTTP 响应标头] 参数?
【发布时间】:2020-02-28 04:24:09
【问题描述】:

在我的 Django 应用程序中,以下设置确保响应标头启用了标准键值对。

但是,“服务器”名称和版本信息默认仍然可见,需要隐藏(暴露的服务器名称和版本是 OWASP 漏洞)。

middleware.py

class MyAppMiddleware:

    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        response = self.get_response(request)
        response['X-XSS-Protection'] = "1; mode=block"
        return response


class RemoveHeaders(object):           # this method invocation throws error
    def process_response(self, request, response):
        response['Server'] = ''
        return response

同样在其他帖子中建议,这个 middleware.py 在 settings.py 中的中间件的第一顺序声明:

MIDDLEWARE = [
    'MyApp.middleware.RemoveHeaders',
    'MyApp.middleware.MyAppMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

RemoveHeaders() 方法抛出错误:TypeError: RemoveHeaders() 不接受任何参数。这是因为我不确定将哪个对象传递给此方法。

更新:导入以下内容对我有用。

from django.utils.deprecation import MiddlewareMixin


# class to import in RemoveHeaders--

class RemoveHeaders(MiddlewareMixin):
     # rest of the code

【问题讨论】:

  • 是的,我做到了。上面截取的代码已更新。但是,为处理隐藏响应标头而单独创建的“RemoveHeaders”方法会在方法调用时引发错误
  • __call__ 中,我添加了这一行print('Response has Server header', response.has_header('Server')),它打印了False。这意味着Server 标头甚至没有在那个时候设置。我不确定它在哪里设置以及为什么第二种方法有效。

标签: python django server middleware django-middleware


【解决方案1】:

@stackoverflowusrone 我从 django v3.7 源代码中找到了这个,服务器头来自这里:

但我不知道如何删除它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 2012-04-24
    • 1970-01-01
    • 2020-11-09
    • 2016-03-18
    • 2016-06-04
    • 2021-06-04
    相关资源
    最近更新 更多