北极寒流 » 网络资源 » 隐藏Nginx/apache/PHP版本号方法 - 2016.11.17

隐藏Nginx/apache/PHP版本号方法

1.隐藏Nginx版本号,Nginx的版本号主要在两个地方会有,一个是HTTP header,有个Server:nginx/1.x.x类似会暴露Web服务器所用软件名称以及版本号,这个也是大多数Web服务器最容易暴露版本号的地方,第二个地方是Nginx出错页面,比如404页面没有找到等,这是如果用户没有指定页面的话,那么Nginx自己的页面会有版本戳记。

不过幸运的是对于这两个地方的版本号隐藏,Nginx都提供了简单的办法一步到位,通过在配置文件的http节配置server_tokens off来达到我们目的。

  http {
    # ...省略一些配置
    server_tokens off;
  }

最后别忘了使用命令nginx -s reload刷新当前配置。完成后你可以查看所有页面的响应头或者错误页,看看是不是只看到nginx字样而看不到版本号?

2.隐藏PHP的版本号,PHP容易暴露的版本号在什么地方呢?其实也是在HTTP头,以类似X-Powered-By: PHP/5.2.11这种形式存在,大家可能会想到会不会是Nginx问题,而去到Nginx里面找相关配置,呵呵,其实这个是在PHP的配置文件php.ini里改动,打开php.ini,找到下面叙述:

;;;;;;;;;;;;;;;;;
; Miscellaneous ;
;;;;;;;;;;;;;;;;;   ; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header).  It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
; http://php.net/expose-php
expose_php = On

将expose_php = On改为expose_php = Off就搞定了,当然,对于Apache服务器还有另外一个方法可以直接尝试在.htaccess文件中Header unset X-Powered-By,删除X-Powered-By节,不过还是建议改动php.ini的expose_php。

3.隐藏apache版本号

1、隐藏Apache版本号的方法是修改Apache的配置文件,如RedHat系的Linux默认是:

vim /etc/httpd/conf/httpd.conf

分别搜索关键字ServerTokensServerSignature,修改:

ServerTokens OS 修改为 ServerTokens ProductOnly  (看下面的说明,其实不改这条也是可以的)

ServerSignature On 修改为 ServerSignature Off

2、重启或重新加载Apache就可以了。

apachectl restart

附:网上很多方法多是按上面的设置会同时修改两个参数,后来经过测试以及查阅资料得知,ServerSignature和ServerTokens参数,这里是不准确的,多此一举,其实只需要修改ServerSignature为Off即可

修改httpd.conf:

ServerSignature Off

ServerSignature出现在Apache所产生的像404页面、目录列表等页面的底部。

ServerTokens的解释可以看下面,当ServerSignature为On时这个参数的设置才会生效,显示返回信息的具体设置。

ServerTokens指令

语法:ServerTokens Major | Minor | Min[imal] | Prod[uctOnly] | OS | Full

默认:ServerTokens Full

这个指令用来控制服务器回应给客户端的“Server:”应答头是否包含关于服务器操作系统类型和编译进的模块描述信息。

注意:在使用ServerTokens指令时要先启用ServerSignature指令。

ServerTokens Prod[uctOnly]:服务器会发送(比如):Apache 

Apache Server at 192.168.120.240 Port 80 

ServerTokens Major:服务器会发送(比如):Apache/2 

Apache/2 Server at 192.168.120.240 Port 80 

ServerTokens Minor:服务器会发送(比如):Apache/2.2 

Apache/2.2 Server at 192.168.120.240 Port 80 

ServerTokens Min[imal]:服务器会发送(比如):Apache/2.2.11

Apache/2.2.11 Server at 192.168.120.240 Port 80 

ServerTokens OS:服务器会发送(比如):Apache/2.2.11(Unix)

Apache/2.2.11 (Unix) Server at 192.168.120.240 Port 80

ServerTokens Full:服务器会发送(比如):Apache/2.2.11(Unix)PHP/5.2.8

Apache/2.2.11 (Unix)  PHP/5.2.8 Server at 192.168.120.240 Port 80

资料来源:网络

17

隐藏Nginx/apache/PHP版本号方法

分享到:

最受欢迎的