我希望在生产环境中运行一个快速.js应用程序,我最不想让任何人知道它是由express.js或一般节点驱动的。我读了这篇文章:
https://expressjs.com/en/advanced/best-practice-security.html
并且确定我需要移除 X 供电者(无论我是否使用头盔(。
困扰我的是文章中的陈述,它说:
注意:禁用 X 供电者标头不会阻止 确定应用正在运行的复杂攻击者 表达。它可能会阻止随意的漏洞利用,但还有其他方法。 以确定应用正在运行 Express。
攻击者还可以通过哪些其他方式检测正在运行的 express.js 应用程序,以及如何防范此问题?
您可能会对此评论感兴趣。我已经复制粘贴了以下几点:
检测服务器是否正在运行 Express 的常用方法
- 是否有全部小写的响应标头?数量越多,分配的点就越多,可能是 Node.js 服务器,这反过来又计入 Express.js。
- 对随机 URL 的一些请求是寻找 404。如果响应正文的格式为"无法获取{url}",那么它会为它是Express.js给出大量的分数。这实际上是它用来知道您是 Express.js 服务器的主要信息。
- 如果有 ETag 标头,它会是什么样子?对于 Express.js 的不同版本的 ETag 标头格式有定义,因此此标头与某些格式匹配不仅给出了 Express.js 的分数,甚至暗示了您正在使用的 Express 版本.js因为格式随着时间的推移而变化(即使是 X-Powered-By 标头也没有提供该级别的详细信息,因为它不包含版本(。
正如官方网站上解释的那样,有很多事情要做:
这是主要摘录,建议的完整列表在我给你的链接上。
使用头盔
var helmet = require('helmet')
app.use(helmet())
至少禁用 X 供电者标头
app.disable('x-powered-by')