PHP程序的安全部署(PHP程序防黑客手段)


前言

PHP是边解释边运行的,而且是直接解释源码文件。这就给代码保护带来了不便。假设我写了一款PHP程序,我要卖给别人,那么不管我是直接给别人部署了还是只给别人程序,对方都会看见我的代码,那他拿着我的代码改改再去卖钱我除了走法律渠道外也就没办法了。

PHP代码保护的几种手段

一种二进制层面的,主要是对PHP的中间码做一些处理。但是这种方式你对代码做加密需要工具,解密也要工具,典型的例子就是Zend Guard。PHP需要安装Zend 扩展才能正常使用经过Zend Guard加密后的程序。这也给代码传播带来了不便,一般虚拟主机是不会支持自己安装PHP扩展的,当然你要是VPS那倒是可以试试。
另外一种就是代码混淆,源码层面的,其实就是字符串替换。
PHP代码混淆技术成了PHP版权保护的重要手段。很多PHP程序员在发售软件之前都会使用代码混淆工具来做一下代码混淆。这样给别人的代码也就成了一堆可读性极差的字符串。这就造成了一个安全问题,一般来说PHP的木马程序或者PHP Shell也都是一堆可读性极差的字符串。没有编程经验的站长通常叫这些字符串乱码。

如何区分一个PHP乱码文件是木马还是正常文件?

当前PHP模版插件市场繁荣。原作者是否使用了代码混淆一般不可查。你安装的插件、模版里面是不是有乱码呢?这些乱码是原作者写的没有木马的程序还是真正的木马程序?分清这点其实不难。

  • 如果这个文件是PHP程序(Typecho、Wordpress等)安装包中就有的,现在变成了乱码,那肯定就是乱码。
  • 如果是网上下载的免费主题或者免费插件,这一类免费代码是不会做代码混淆的,出现乱码文件就重新下载一份同名文件替换之。
  • 收费主题或者插件,这类代码是最有可能做代码混淆的,要是作者还能联系到就联系作者问问。
    以上三种都解决不了的,依次尝试以下办法。
  1. 在一个可用的PHP运行环境中部署你认为有可能是木马的文件。
  2. 在浏览器中访问这个文件,如果出现一个类似文件管理器的界面,能上传能下载能改文件权限。那绝对就是木马。你需要检查你所有的文件目录,看看是否有同类型文件。
  3. 在中国菜刀等webshell利用工具的URL栏中填写这个文件的浏览器访问路径,要是能够连接成功说明就是木马。

针对2、3项的说明
目前一些上传木马或者webshell设置了用户名密码,没有用户名密码是不能成功使用的,获取用户名密码你只需要打开你怀疑的那个木马文件,用户名密码就在那写着。这也是PHP能够直接看源码的一个好处。

如果你无法操作上述方法,请联系我付费处理。联系方式在关于页面

防范

主要的防范措施还是要从正规渠道获取代码,用代码之前看一眼文件正常不正常,例如一个只有静态展示功能的页面是用PHP写的,这就很值得怀疑,或者一个只有静态展示功能的页面文件夹下有PHP文件,这也很值得怀疑,需要用上面的方法判断一下。
另外一个防范措施就是我正在使用的。
你需要安装一下顺序依次操作。

  1. 安装好PHP程序(Typecho、Wordpress等)之后立即删除install.php、install/目录。
  2. 修改admin页面访问路径,具体的修改办法请百度 你的PHP程序+修改admin页面访问路径
  3. 添加伪静态rewrite规则。
  4. 关闭XMLRPC 接口等远程接口。

本站使用的是Typecho。我给大家免费提供一个Typecho的Apache服务器下的伪静态规则。
文件名:.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php [E=PATH_INFO:$1]
    RewriteRule (var|usr)(.+ph*)$ index.php [E=PATH_INFO:$1]
    RewriteRule (config.inc.php|.htaccess)$ index.php [L,E=PATH_INFO:$1]
</IfModule>    

我把这个文件的思想说一下,首先添加正常的伪静态规则,之后添加禁止访问的目录,varusr目录都是禁止访问php、php3、php5等后缀名的文件的。可能有人会问admin目录为什么不添加?这里说明一下,之前我已经要求大家把admin路径改名了,假如说我改成了woaini0001那这种目录是很难猜到的,而且管理目录是需要能够访问到php文件的。下一步是添加禁止访问的根目录下的单个文件了,我这里添加了Typecho在根目录下的配置文件config.inc.php和Apache的Rewrite规则文件.htaccess。

为什么要这么写呢?黑客通过上传漏洞上传了PHP木马后他也要通过URL来访问他的木马,我禁止了除了首页index.php与他很难猜到的管理目录下的所有PHP文件的访问,因此,除非他重写了index.php或者把木马上传到了管理目录,否则就算他上传木马到了upload文件夹那也无济于事。

同目录下部署多个PHP程序的请确保你的邻居的程序安全,要是你的邻居被黑了那你也会被黑。

你完全可以照着以上思想编写适用于你的PHP程序和Web服务器的伪静态规则。

2019.07.14更新:新增Nginx规则

此规则原理同上,经测试Nginx和OpenResty下可用。

    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php$1;
    }
    rewrite /(var|usr)(.+ph*)$ /index.php;
    rewrite /(config.inc.php|.htaccess)$ /index.php last;

如果你无法操作上述方法,请联系我付费处理。联系方式在关于页面。

更高的安全需求

如果你觉得这样还不能达到你的安全要求,请你使用WAFWeb应用防火墙),奇安信网站安全卫士、百度云加速都提供WAF功能。
或者你也可以部署开源的WAF产品,例如ModSecurity。
或者你也可以联系我付费部署我自己写的WAF。

如果你的网站遭受了攻击需要处理,请联系我付费处理。联系方式在关于页面。

我的规则是先服务后付费。

声明:物博网|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - PHP程序的安全部署(PHP程序防黑客手段)


喜欢安全与WEB开发