HTTP头隐藏PHP版本号实现过程解析


Posted in PHP onDecember 09, 2020

PHP 配置默认允许服务器在 HTTP 响应头 X-Powered-By 中显示安装在服务器上的 PHP 版本。出于服务器安全原因(虽然不是主要的要担心的威胁),建议你禁用或隐藏此信息,避免那些针对你的服务器的攻击者知道你是否运行了 PHP。在本文中,我们将解释如何隐藏或关闭服务器 HTTP 响应头中的 PHP 版本号。

PHP 配置默认允许服务器在 HTTP 响应头 X-Powered-By 中显示安装在服务器上的 PHP 版本。

出于服务器安全原因(虽然不是主要的要担心的威胁),建议你禁用或隐藏此信息,避免那些针对你的服务器的攻击者知道你是否运行了 PHP。

假设你服务器上安装的特定版本的 PHP 具有安全漏洞,而攻击者了解到这一点,他们将更容易利用漏洞并通过脚本访问服务器。

在我以前的文章中,我已经展示了如何隐藏 apache 版本号,你已经看到如何不再显示 apache 的安装版本。但是如果你在你的 apache 服务器上运行 PHP,你还需要隐藏 PHP 的安装版本,这我们将在本文中展示。

因此,在本文中,我们将解释如何隐藏或关闭服务器 HTTP 响应头中的 PHP 版本号。

此设置可以在加载的 PHP 配置文件中配置。如果你不知道此配置文件在服务器上的位置,请运行以下命令找到它:

$ php -i | grep "Loaded Configuration File"

PHP 配置文件位置

---------------- 在 CentOS/RHEL/Fedora 上----------------
Loaded Configuration File => /etc/php.ini
---------------- 在 Debian/Ubuntu/Linux Mint 上----------------
Loaded Configuration File => /etc/php/7.0/cli/php.ini

在对 PHP 配置文件进行任何更改之前,我建议您首先备份您的 PHP 配置文件,如下所示:

----------------在 CentOS/RHEL/Fedora 上----------------
$ sudo cp /etc/php.ini /etc/php.ini.orig
---------------- 在 Debian/Ubuntu/Linux Mint 上----------------
$ sudo cp /etc/php/7.0/cli/php.ini /etc/php/7.0/cli/php.ini.orig

用你最喜欢的编辑器,使用超级用户权限打开文件:

---------------- 在 CentOS/RHEL/Fedora 上----------------
$ sudo vi /etc/php.ini
----------------在 Debian/Ubuntu/Linux Mint 上----------------
$ sudo vi /etc/php/7.0/cli/php.ini

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

expose_php = Off

保存并退出文件。之后,重启 web 服务器:

---------------- 使用 SystemD ----------------
$ sudo systemctl restart httpd 或
$ sudo systemctl restart apache2
---------------- 使用 SysVInit ----------------
$ sudo service httpd restart 或
$ sudo service apache2 restart

最后,不过同样重要,使用下面的命令检查服务器 HTTP 响应头是否仍然显示你的 PHP 版本号。

lynx -head -mime_header http://localhost

或者

$ lynx -head -mime_header http://server-address

这里的标志含义是:

-head ? 发送一个请求 mime 报头的 HEAD 请求。
-mime_header ? 打印所提取文档的 MIME 标头及其源代码。

注意: 确保你系统中已经安装了命令行 web 浏览器 lynx。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
杏林同学录(三)
Oct 09 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
Jul 23 PHP
那些年一起学习的PHP(三)
Mar 22 PHP
PHP5中GD库生成图形验证码(有汉字)
Jul 28 PHP
php获取mysql字段名称和其它信息的例子
Apr 14 PHP
PHP学习笔记之字符串编码的转换和判断
May 22 PHP
thinkphp判断访客为手机端或PC端的方法
Nov 24 PHP
帝国cms常用标签汇总
Jul 06 PHP
php分页查询的简单实现代码
Mar 14 PHP
iis6手工创建网站后无法运行php脚本的解决方法
Jun 08 PHP
PHP的PDO事务与自动提交
Jan 24 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
Feb 21 PHP
PhpStorm连接服务器并实现自动上传功能
Dec 09 #PHP
PHP大文件分割分片上传实现代码
Dec 09 #PHP
PHP rsa加密解密算法原理解析
Dec 09 #PHP
PHP如何解决微信文章图片防盗链
Dec 09 #PHP
PHP sdk文档处理常用代码示例解析
Dec 09 #PHP
PHP sdk实现在线打包代码示例
Dec 09 #PHP
基于PHP实现生成随机水印图片
Dec 09 #PHP
You might like
几种显示数据的方法的比较
2006/10/09 PHP
删除无限分类并同时删除它下面的所有子分类的方法
2010/08/08 PHP
php中echo()和print()、require()和include()等易混淆函数的区别
2012/02/22 PHP
php过滤html中的其他网站链接的方法(域名白名单功能)
2014/04/24 PHP
php显示页码分页类的封装
2017/06/08 PHP
浅析PHP类的反射来实现依赖注入过程
2018/02/06 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
2019/03/11 PHP
简单的php购物车代码
2020/06/05 PHP
ie下动态加态js文件的方法
2011/09/13 Javascript
一些常用弹出窗口/拖放/异步文件上传等实用代码
2013/01/06 Javascript
使用JQuery FancyBox插件实现图片展示特效
2015/11/16 Javascript
js+div+css下拉导航菜单完整代码分享
2016/12/28 Javascript
ES6新特性五:Set与Map的数据结构实例分析
2017/04/21 Javascript
Parcel.js + Vue 2.x 极速零配置打包体验教程
2017/12/24 Javascript
对vue下点击事件传参和不传参的区别详解
2018/09/15 Javascript
Angular父子组件通过服务传参的示例方法
2018/10/31 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
解决layer弹出层自适应页面大小的问题
2019/09/16 Javascript
原生js拖拽实现图形伸缩效果
2020/02/10 Javascript
Angular+ionic实现折叠展开效果的示例代码
2020/07/29 Javascript
python解析xml文件操作实例
2014/10/05 Python
使用python加密自己的密码
2015/08/04 Python
Python paramiko模块的使用示例
2018/04/11 Python
Django高并发负载均衡实现原理详解
2020/04/04 Python
解决pytorch下出现multi-target not supported at的一种可能原因
2021/02/06 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
校园达人秀策划书
2014/01/12 职场文书
民族学专业大学生职业规划范文:清晰未来的构想
2014/09/20 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
终止劳动合同证明书样本
2014/11/19 职场文书
用电申请报告范文
2015/05/18 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
python实现简单倒计时功能
2021/04/21 Python
python双向链表实例详解
2022/05/25 Python
MySQL索引失效场景及解决方案
2022/07/23 MySQL