【问题标题】:Is it good practice to hide web server information in HTTP headers?在 HTTP 标头中隐藏 Web 服务器信息是一种好习惯吗?
【发布时间】:2008-12-04 01:03:43
【问题描述】:

这个问题比编程更涉及安全,如果它不应该在这里,很抱歉。

我目前正在开发一个 Web 应用程序,我很好奇为什么大多数网站不介意在 HTTP 标头中显示其确切的服务器配置,例如 Apache 和 PHP 版本,带有完整的“mod_perl、mod_python、.. ." 列表等。

从安全的角度来看,我希望无法确定我是在 Apache 上运行 PHP、在 IIS 上运行 ASP.NET 还是在 Lighttpd 上运行 Rails。

显然“默默无闻不是安全”,但我是否应该担心访问者知道我的服务器运行的是什么版本的 Apache 和 PHP?隐藏这些信息是好的做法还是完全没有必要?

【问题讨论】:

    标签: security http web-applications


    【解决方案1】:

    流行的智慧是删除服务器 ID 和版本;更好的是,将它们更改为另一个合法的服务器 ID 和版本——这样攻击者就会开始尝试针对 Apache 的 IIS 漏洞或类似的东西。还不如误导攻击者。

    但老实说,还有很多其他线索可供参考,我想知道这是否值得。我想它可以阻止攻击者使用搜索引擎查找具有已知漏洞的服务器。

    (就我个人而言,我并不在乎我的 HTTP 服务器,但它是用 Java 编写的,并且不太容易受到典型类型的攻击。)

    【讨论】:

      【解决方案2】:

      我认为您通常会看到这些标头,因为系统默认发送它们

      我经常删除它们,因为它们没有提供真正的价值,并且可能会如您所建议的那样泄露有关服务器的信息。

      【讨论】:

      • 所以我想下一个 SO 问题是,如何删除 HTTP 标头? :P
      【解决方案3】:

      在标题中隐藏信息通常只会减缓懒惰和无知的恶棍。有很多方法可以对系统进行指纹识别。

      【讨论】:

        【解决方案4】:

        针对 IP 运行 nmap -O -sV 将为您提供具有相当高准确度的操作系统和服务版本。通过让您的服务器宣传该信息,您提供的唯一额外信息是您加载了哪些模块。

        【讨论】:

          【解决方案5】:

          似乎有些答案缺少关闭标题的明显优势。

          是的,你们都是对的;转动标题(以及出现的状态行,例如在目录列表中)并不能阻止攻击者找出您使用的软件。

          但是,关闭此信息可防止恶意软件使用 google 查找易受攻击的系统找到您。

          tldr:不要将其用作(或什至用作)安全措施,而应将其用作驱走不需要的流量的措施。

          【讨论】:

            【解决方案6】:

            我通常用 ServerTokens 关闭 Apache 的长头版本信息;它没有增加任何有用的东西。

            没有人知道的一点是,如果您从网络服务器提供的信息较少,那么对于潜在客户、渗透测试公司等来说,这似乎是更好的安全性。

            因此,提供更少的信息可以提高感知的安全性(即,它表明您实际上已经考虑过并做了一些事情)

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-02-05
              • 2016-03-21
              • 2022-01-23
              • 2022-12-21
              • 1970-01-01
              • 2018-03-18
              • 2020-06-04
              • 1970-01-01
              相关资源
              最近更新 更多