MENU

如何隐藏PHP/Nginx版本信息

2018 年 09 月 21 日 • 阅读: 193 • 运维技术阅读设置

其实隐藏 Nginx 版本号无非就是为了防止“各版本公开的漏洞”被人利用而已,这点 Nginx 其实很早就考虑到了,在Nginx 的配置文件里只要加上server_tokens off就可以在网页head里隐藏掉 Nginx 的版本号了。

隐藏PHP/Nginx版本信息.jpg

隐藏 Nginx 版本号

具体操作如下:

第一步:

vim /usr/local/nginx/conf/nginx.conf

http{} 中加入

server_tokens off;

第二歩:

vi /usr/local/nginx/conf/fastcgi_params

将里面的

fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

修改为:

fastcgi_param SERVER_SOFTWARE nginx;

隐藏 Web 服务器名称

关于如何隐藏Web 服务器名称,目前看除了在编译 Web 服务器名称的时候进行伪装以外没有很好的办法了。下面以 Nginx 为例,伪装Nginx的具体办法,

首先需要在官网上下载 Nginx 源码解压,解压后编辑源码中的 src/core/nginx.h 文件

vi /src/core/nginx.h

修改为:

注意:# 不可以删除否则会报错,注释的部分可修改为任何字符。

#define NGINX_VERSION      "1.0"  //修改版本号
#define NGINX_VER          "GWS/" NGINX_VERSION //修改服务名称

修改 HTTP 响应头:

vi src/http/ngx_http_header_filter_module.c

修改为:

static u_char ngx_http_server_string[] = "Server: GWS" CRLF;

修改错误页的底部 Footer:

vi src/http/ngx_http_special_response.c

修改为:

static u_char ngx_http_error_tail[] =
"<hr><center>GWS</center>" CRLF
"</body>" CRLF
"</html>" CRLF
;

之后重新编译 nginx 即可。

注意事项:程序重新编译完后,要 reload 不会生效,需要用 kill 命令杀死原来的进程,再重新启动 Nginx 。

其实还有一个最简单的隐藏 Web 服务器名称的方法,那就启用 CDN 服务,当客户端访问的是 CDN 节点的时候,看到的当然也就是 CDN 节点的 Web 服务器名称了,至于自己网站的 Web 服务器名称只要没有“真实IP”几乎是不可能获得了,国内很多的免费 CDN 都可以的。

隐藏 PHP 版本号

找到 PHP 配置文件 php.ini

定位到关键词 expose_php,并将值设置成 Off

expose_php = Off

保存并退出文件。重启 web 服务器即可。

扫码手机看 请喝咖啡 返回首页
本页链接的二维码
打赏二维码