如何防止复杂的攻击者知道生产中的Express.js支持您的应用程序?

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

我希望在生产环境中运行express.js应用程序,而我想要的最后一件事是让任何人都知道它是由express.js或一般由node驱动的。我读了这篇文章:

https://expressjs.com/en/advanced/best-practice-security.html

并且肯定知道我需要删除X-Powered-By(无论是否使用头盔)。

困扰我的是文章中的声明:

注意:禁用X-Powered-By标头不会阻止资深攻击者从确定应用程序正在运行表达。它可能不鼓励随意利用,但是还有其他方法确定应用程序正在运行Express。

攻击者还可以通过哪些其他方式检测到express.js应用程序正在运行,以及如何防止这种情况发生?

node.js express security
2个回答
2
投票

This评论可能会让您感兴趣。我已复制粘贴以下几点:

检测服务器是否正在运行Express的常用方法

  1. 是否所有响应头都小写?数量越多,分配给Node.js服务器的点就越多,这又计入Express.js。
  2. 向随机URL发出一些请求是为了寻找404。如果响应正文的格式为“ Cannot GET {url}”,则它给Express.js带来了很多要点。实际上,这是用来了解您是Express.js服务器的主要赠品。
  3. 如果有一个ETag标头,它会是什么样?对于Express.js,有不同版本的ETag标头格式的定义,因此,与某些格式匹配的标头不仅为Express.js指明要点,而且甚至提示您正在使用的Express.js版本,因为该格式已经随着时间而改变(即使X-Powered-By标头也不提供该级别的详细信息,因为它不包含版本)。

0
投票

official website所述,有很多事情要做:

这里是主要摘录,建议的完整列表在我给您的链接上。

[使用头盔

var helmet = require('helmet')
app.use(helmet())

至少禁用X-Powered-By标头

app.disable('x-powered-by')
© www.soinside.com 2019 - 2024. All rights reserved.