<?php echo $logosrc[0];?,关闭PHP Credits和隐藏的GUID图片Logo彩蛋的显示

本文介绍了PHP中php_logo_guid和zend_logo_guid等函数返回的GUID字符串用途,它们与PHP和Zend Logo相关。这些信息可能被用于识别服务器上的PHP安装。为了提升服务器安全性,可以通过修改php.ini的'expose_php'选项来隐藏PHP版本及相关信息。此外,还提供了使用.htaccess阻止特定GUID访问的方法,以增强服务器的安全防护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在查询PHP官方手册时有两个函数

string php_logo_guid ( void );

// Returns PHPE9568F34-D428-11d2-A769-00AA001ACF42

string zend_logo_guid ( void );

// Returns PHPE9568F35-D428-11d2-A769-00AA001ACF42

string php_logo_guid ( void );

// Returns PHPE9568F34-D428-11d2-A769-00AA001ACF42

string zend_logo_guid ( void );

// Returns PHPE9568F35-D428-11d2-A769-00AA001ACF42

这两个函数返回的以PHPE95..开头字符串,这个字符串有什么用呢?比如php_logo_guid手册举了一个例子:

< ?php

echo 'PHP Logo !';

?>

< ?php echo 'PHP Logo !'; ?>

如果一切正常的话,页面会输出一个PHP Logo,实际上图片地址存在任意的php页面后跟?=PHPE9568F34-D428-11d2-A769-00AA001ACF42这样的guid串,如果PHP是默认配置的话每个PHP页面都能找到,比如说有index.php,可以尝试访问index.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42,再看一下zend_logo_guid显示的图片,现在有些眼熟了吧,没错这些图片都被phpinfo()输出信息所调用。

我们可以在PHP 源码的 ext/standard/info.h 中找到相关标识图片GUID的定义:

#define PHP_LOGO_GUID "PHPE9568F34-D428-11d2-A769-00AA001ACF42"

#define PHP_EGG_LOGO_GUID "PHPE9568F36-D428-11d2-A769-00AA001ACF42"

#define ZEND_LOGO_GUID "PHPE9568F35-D428-11d2-A769-00AA001ACF42"

#define PHP_CREDITS_GUID "PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000"

#define PHP_LOGO_GUID "PHPE9568F34-D428-11d2-A769-00AA001ACF42"

#define PHP_EGG_LOGO_GUID "PHPE9568F36-D428-11d2-A769-00AA001ACF42"

#define ZEND_LOGO_GUID "PHPE9568F35-D428-11d2-A769-00AA001ACF42"

#define PHP_CREDITS_GUID "PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000"

除了我们刚才知道的PHP Logo和Zend Logo的外,还有两个PHP_CREDITS_GUID和PHP_EGG_LOGO_GUID比较新鲜,尝试PHP_CREDITS_GUID后发现其不是显示的图片,而是显示了一长串的Credits,包含创作团队的名字;另外一个PHP_EGG_LOGO_GUID是什么呢?从名字上也能猜出一二,嘿,是个复活节彩蛋,我上面显示了是个毛绒蓝色的大象,上面印上了PHP字样,据说这个彩蛋有以下几种:

20120522005002.png

好了,娱乐了这么长时间,下面好一本正经下了,多数情况下Hackers会在攻击服务器前收集相关服务器的信息,然后进行有针对的攻击措施,我们不想让不怀好意者知道我们Web后台的开发语言,除了隐藏后缀(*.php)以及隐藏服务器或者cgi版本外,刚才提到的这些信息也是我们重点隐藏的对象。为了安全,只能和这些有趣的东东说再见了,其实PHP里面隐藏这些内容也很容易,不说大家也知道去改配置文件php.ini,至于改哪个选项,我这里交待一下,那就是《隐藏Nginx和PHP版本号》也提及过这个选项,当时只知道可以隐藏PHP版本号,没想到设置为Off后还能一并隐藏PHP Credits以及Guid图片,配置如下:

;;;;;;;;;;;;;;;;;

; 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

;;;;;;;;;;;;;;;;;

; 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

刚才看到有人通过设置apache的.htaccess来禁止访问这些GUID的URL,虽然灵活性较差,不过也分享出来供大家参考吧:

# 禁止特定GUID

RewriteEngine On

RewriteCond %{QUERY_STRING} \PHPE9568F36-D428-11d2-A769-00AA001ACF42\ [NC]

RewriteRule .* - [F]

# 或者正则禁止所有已知GUID

# See https://akeeba.assembla.com/code/master-htaccess/git/nodes/htaccess.txt

RewriteEngine On

RewriteCond %{QUERY_STRING} \=PHP[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12} [NC]

RewriteRule .* - [F]

# 禁止特定GUID

RewriteEngine On

RewriteCond %{QUERY_STRING} \PHPE9568F36-D428-11d2-A769-00AA001ACF42\ [NC]

RewriteRule .* - [F] # 或者正则禁止所有已知GUID

# See https://akeeba.assembla.com/code/master-htaccess/git/nodes/htaccess.txt

RewriteEngine On

RewriteCond %{QUERY_STRING} \=PHP[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12} [NC]

RewriteRule .* - [F]

最后,更改过配置别忘了让PHP或者Web服务器重新加载配置哦。

参考文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值