apache - 无法删除服务器 : Apache header

标签 apache centos http-headers apache2

我的 HTTP 响应 header 中有“服务器:Apache”,我想将其删除。 我按照说明将其添加到 httpd.conf:

ServerSignature Off  
ServerTokens Prod
Header unset Server

但是最后一行没有任何作用。前两行更改了 header 的内容(之前它还包含有关操作系统和 PHP 的信息),但我需要将其完全删除。 如何做到这一点?

最佳答案

Apache 不允许您完全取消设置。事实上,一些开发人员强烈反对添加它,尽管它是一个简单的代码更改,已经被多次建议(甚至编写!)。参见 herehere仅针对提出和拒绝此问题的一些讨论。

他们给出了各种原因,包括:

  1. 这可能会增加实际安装 Apache 数量的难度。我怀疑这是主要原因。 Web 服务器的使用竞争激烈,Apache 的竞争对手之一(可能以 N 开头,也可能不以 N 开头)定期发布它如何在 Apache 上取得进展,并且大多数扫描将基于 HTTP header ,所以我可以理解这种不愿做出隐藏起来更容易。

  2. 默默无闻的安全是一个神话,并且给人一种错误的安全感,因为根据服务器对特定请求的响应方式,很容易对服务器进行指纹识别以查看它可能是哪种软件。虽然这有一点道理,但将 ServerTokens 默认指定为 Full 绝对是一个安全问题,会泄露太多信息,而不是默认情况下应该在公共(public)网站上显示的信息。

    <
  3. 不提供服务器 header 可能违反也可能不违反 HTTP 规范。这似乎存在一些争议,但仍然没有回答为什么他们不允许您将其更改为某个随机字符串而不是 Apache。

  4. 这使得调试问题变得困难,但您认为任何需要调试的人都知道或能够找到确切的版本。

  5. 如果代理服务器知道另一端的服务器类型,它们“可能”会以不同方式处理请求。恕我直言,代理服务器有什么问题,我怀疑它是否已经做了很多。

  6. 如果人们真的想修改或隐藏此 header ,他们可以编辑源代码。坦率地说,这是一个危险的建议,建议没有代码经验的人去做,如果他们从非打包版本运行只是为了添加这个,可能会导致其他安全问题。

他们甚至将其添加到 official documentation 中:

Setting ServerTokens to less than minimal is not recommended because it makes it more difficult to debug interoperational problems. Also note that disabling the Server: header does nothing at all to make your server more secure. The idea of "security through obscurity" is a myth and leads to a false sense of safety.

恕我直言,这种推理很荒谬,而且正如我所说,如果这是不允许这样做的主要原因,那么我不明白他们为什么不改变立场。在更糟糕的情况下,它不会像他们所说的那样添加任何内容,并且它会阻止这个问题经常被提出,但我个人认为你提供的不必要信息越少越好,所以我希望能够将其关闭。

直到那个不太可能的掉头,你剩下的是:

  1. 将其设置为最小值(这样它将显示“Apache”)——这可能就足够了
  2. 编辑源代码 - 除了最偏执的人之外,这太过分了,这意味着需要对每个新版本应用相同的更改。
  3. 正在安装 ModSecurity - 它(至少曾经)允许您将此 header 覆盖(但不能删除)到您想要隐藏服务器软件的任何位置。尽管 WAF 还有其他好处,但为此安装它可能有点过分了。
  4. 在另一台 Web 服务器后面代理 Apache,允许您更改此字段。
  5. 切换到另一个网络服务器。

然而,应该注意的是,对于第 4 点和第 5 点,大多数其他 Web 服务器也不允许您将其关闭,因此这不是 Apache 独有的问题。例如,Nginx 不允许在不类似地编辑源代码的情况下关闭它。

关于apache - 无法删除服务器 : Apache header,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35360516/

相关文章:

html - 单页html网站 - nginx 403 Forbidden

http - 在 HTTP 响应中使用 "X-..." header 是否安全?

python - 如何在服务器运行时通过 diff 请求访问只读数据(apache、mod_python)

Apache 不在目录列表中显示 README.TXT 文件。我怎样才能启用它?

java - 对于使用记录器框架的 apache-tomcat 与将 STDOUT 重定向到 catalina.out

python - 某些应用程序使用 python 2.7,同时操作系统保留 python 2.6 (linux fedora/centos)

centos - 使用 CentOS UserLand 在 Raspberry Pi3 上运行 dotnet 核心应用程序

jquery - 仅当有 header 时,CORS 请求才会在 Chrome 中失败

javascript - 所有文件都使用myme text/html发送,忽略服务器node.js上的 header 函数writeHead

apache - 为什么我在 ubuntu 中运行 apache2 时遇到问题?