默认启用
隐藏X-Powered-By简介:本中间件移除了X-Powered-By
响应头,让攻击者更难以看到您的站点可能支持哪些潜在的易受攻击技术点。
“攻击方式”
如果黑客知道你在使用Express
和Node
,那么它们就可能会利用已知的漏洞。Express
(以及一些其他web框架,如PHP)会为每个请求设置X-Powered-By
响应头以表示服务器的技术栈。
如果他们知道Express
或Node
的漏洞,并且看到您的网站用的是Express
,那可真是太方便了。
修复方法
很简单,移除这个响应头即可。
诚然,黑客不会因为有没有这个响应头来放弃入侵行为。他们仍旧回去寻找其他方法来判断您的服务器使用了哪种语言,比方说尝试多种攻击方式来看看是否有任何一个有效。移除它并不意味着没有人可以利用漏洞;仅仅是稍微减缓一下它们的速度或是阻止一个稍微懒一点的黑客罢了。
哦对了,因为发送的字节更少了,所以性能也算提升了-_-||
扩展阅读:
代码
该中间件用处很大,因此在默认情况下就是启用的:
const helmet = require('helmet')
app.use(helmet())
1
2
3
2
3
如果是逐个设置Helmet的响应头,这里有一个更好的方式将该功能设置到Express
:
app.disable('x-powered-by')
1
如果想以内部模块形式应用,也是可以的:
app.use(helmet.hidePoweredBy())
1
若想以单独模块形式,则这样使用:
const hidePoweredBy = require('hide-powered-by')
app.use(hidePoweredBy())
1
2
3
2
3
您还设置一些假的响应头来迷惑黑客,比方说下面这样让它们以为您的网站是由PHP开发的
app.use(helmet.hidePoweredBy({ setTo: 'PHP 4.2.0' }))
1
← Frameguard HSTS →