我可能会为 abc.com
的项目工作托管在 xyz.abc.com
下.当我访问 xyz.abc.com
,响应包含 server
header ,我可以知道它是在 Ubuntu OS ( Apache/2.2.22 (Ubuntu)
) 上运行的 Apache2。但是当我访问 abc.com
并在上面导航,没有server
任何响应中的 header 。
关于这种行为的任何解释?
是server
是否可以通过 Apache 配置或编程控制 header 的存在(例如,在 PHP 中可以设置 last-modified)?如果是通过指令,这意味着不同的域有不同的 Apache 实例(一个配置为返回 header ,另一个配置为隐藏它)?
或者可以将 Ubuntu/Apache2 用于 xyz.abc.com
和完全不同的技术栈 abc.com
?这种技术的名称是什么?
你能解释一下新手的不同可能性吗?先感谢您。
最佳答案
关于 httpd,没有选项可以通过官方方式删除服务器响应 header 。
官方上你可以通过配置做的最多的是设置这些指令:
ServerTokens Prod
ServerSignature off
这样,您的服务器响应 header 将只显示“Apache”。这是最推荐的做法。
虽然如果你有一些偏执的审计坚持让你完全删除标题,你有一些“第三方”方法,最着名的,至少对我来说,是使用“mod_security”。
还有第三种选择,即自己修改 Apache HTTPD 源代码并编译它,这样它就不会添加响应头,但我怀疑有人会建议你这样做。
在任何情况下并回答您的主要问题,删除该 header 并不会真正为您的服务器增加任何安全性,因此确实没有理由删除它。
关于php - 为什么以及何时从 HTTP 响应中省略服务器 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40266032/