CherryPy:从标题和错误页面中删除版本

问题描述 投票:0回答:2

为了防止version disclosure,我希望CherryPy不要透露它的版本。它显示在错误页面和服务器标题中。怎么能被禁用?

http-headers cherrypy
2个回答
1
投票

加入Luc的答案;

在您的配置中,您应该将'response.headers.server'更改为''或自定义内容以隐藏浏览器标题中的版本。

您也可以编辑模板代码以删除Powered By。例如,这将用''替换它。

    cherrypy.__version__ = ''
    cherrypy._cperror._HTTPErrorTemplate = cherrypy._cperror._HTTPErrorTemplate.replace('Powered by <a href="http://www.cherrypy.org">CherryPy %(version)s</a>\n','%(version)s')

0
投票

CherryPy似乎不支持这一点,但我们可以管理自己!

错误页面模板在_cperror.py中是硬编码的,只能通过自定义错误页面从模板中删除版本号。但是,我们可以覆盖从中读取版本号的变量:

cherrypy.__version__ = ''

查看变量的用法,我们发现这将影响错误页面和HTTP标头:

/usr/local/lib/python3.6/dist-packages/cherrypy$ grep cherrypy.__version__ *.py
_cperror.py:         kwargs['version'] = cherrypy.__version__
_cprequest.py:       'Server': 'CherryPy/' + cherrypy.__version__,

HTTP Server标题仍然会提到CherryPy。如Baxter所述,通过设置配置变量response.headers.server,可以覆盖这个:

cherrypy.config.update({
    'response.headers.server': '',
    })

您的错误页面仍会显示“Powered by CherryPy”,但至少不会提及版本号。

请注意,必须在启动服务器之前(即在调用cherrypy.quickstart(...)之前)放置两个代码片段。

© www.soinside.com 2019 - 2024. All rights reserved.