将 .PHP 的扩展后缀名伪装起来

一般而言,通过隐藏的手段提高安全性被认为是作用不大的做法。但某些情况下,尽可能的多增加一份安全性都是值得的。

一些简单的方法可以帮助隐藏 PHP,这样做可以提高攻击者发现系统弱点的难度。在 php.ini 文件里设置 expose_php = off ,可以减少他们能获得的有用信息。

另一个策略就是让 web 服务器用 PHP 解析不同扩展名。无论是通过 .htaccess 文件还是 Apache 的配置文件,都可以设置能误导攻击者的文件扩展名:

例子 1. 把 PHP 隐藏为另一种语言

# 使PHP看上去像其它的编程语言
AddType application/x-httpd-php .asp .py .pl

或者干脆彻底隐藏它:

例子 2. 使用未知的扩展名作为 PHP 的扩展名

# 使 PHP 看上去像未知的文件类型
AddType application/x-httpd-php .bop .foo .133t

或者把它隐藏为 HTML 页面,这样所有的 HTML 文件都会通过 PHP 引擎,会为服务器增加一些负担:

例子 3. 用 HTML 做 PHP 的文件后缀

# 使 PHP 代码看上去像 HTML 页面
AddType application/x-httpd-php .htm .html

要让此方法生效,必须把 PHP 文件的扩展名改为以上的扩展名。这样就通过隐藏来提高了安全性,虽然防御能力很低而且有些缺点。但是确实个性或者有趣了一些。

原文参见由 PHP5 研究室于2005年11月7日编译的《PHP 手册》——安全——隐藏 PHP。

若无特别说明,本文系原创,遵循 署名-非商业性使用 3.0 (CC BY-NC 3.0) 协议,转载文章请注明来自【闪星空间】,或链接上原文地址:http://shansing.com/read/198/

8 条评论

  1. 其实还不如用我的那种方法:http://green-vine.net/skills/39-use-htaccess-to-hide-file-extension

  2. PHP学习中,关注本楼

    1. 嗯,建议多多查阅相关资料。

    2. 测试邮件回复。

  3. 姬长信 姬长信

    您好,这个我在php官方文档也看到了,搜索后发现贵站文章,,但是我实战失败,修改后的文件会被下载,apache2.4

    1. 一个可能的解决方法是添加上你的版本号,如:

      AddHandler application/x-httpd-php56 .php
      AddHandler application/x-httpd-php70 .php
      AddHandler application/x-httpd-php71 .php

      可以试试。我没有测试。

      不过老实说,并不建议用这种方式伪装 .php 扩展名:安全性几乎没有提升,还可能破坏其他的(基于文件扩展名的)安全规则。如果要重写地址,可以考虑常规的 rewrite 方法:在 PHP 里处理 URL 模式,或者在 .htaccess 添加相关规则。

      1. 姬长信 姬长信

        这种方法我刚刚测试也失败了php73,
        安全方面我是按部就班的刷https://www.php.net/manual/zh/security.php
        看到https://www.php.net/manual/zh/security.hiding.php这一步时看到了,因为习惯边动手边学习,就卡到这里两天了,在云服务器和本地环境,均测试失败,很头疼

发表评论»

NO SPAMS! 不要发垃圾评论哦!

表情