CherryPy 默认会在响应的头部带上服务器的版本号,但一些安全扫描软件会认为这是一个漏洞:
1 | # https://github.com/cherrypy/cherrypy/blob/v18.1.1/cherrypy/_cprequest.py#L839 |
针对每个请求的处理修改返回的服务器信息字段,有如下两种方式:
1 |
|
1 |
|
但比较坑爹的是,favicon 使用了 staticfile 进行处理,同样会返回版本信息:
1 | # https://github.com/cherrypy/cherrypy/blob/v18.1.1/cherrypy/_cptree.py#L234 |
此外,404 之类的错误也会返回版本信息。
显然,上面提到的通过给每个请求单独修改响应的方式行不通,不过 CherryPy 的 hook 机制比较强大,可以通过配置的方式给所有的响应都添加处理:
1 | cherrypy.config.update({ |
但是,还一个更坑爹的是 CherryPy 直接在错误页面返回了版本信息:
1 | https://github.com/cherrypy/cherrypy/blob/v18.1.1/cherrypy/_cperror.py#L467 |
可以通过如下的方式进行修改:
1 | from cherrypy import _cperror as cperror |
参考资料
CherryPy — A Minimalist Python Web Framework
https://docs.cherrypy.org/en/latest/index.html
CherryPy Extend
https://docs.cherrypy.org/en/latest/extend.html
Hook into Cherry Pys Core Engine
https://www.pythonstudio.us/cherrypy-guide/hook-into-cherrypys-core-engine.html
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.