PHPCMS平台的注入漏洞太多,防不胜防,为此我想了个设置PHP程序访问限制的方法,只允许访问以下四个PHP程序:
/index.php,/admin.php,/api.php,/phpsso_server/index.php
其它一律禁止访问,以下是apache中虚拟主机增加的重写定义:
- RewriteEngine On
- RewriteCond %{REQUEST_FILENAME} !(\.php$) [NC]
- RewriteRule ^.*$ - [NC,L]
- RewriteRule ^/index.php(.*)$ /index.php$1 [NC,L]
- RewriteRule ^/admin.php(.*)$ /admin.php$1 [NC,L]
- RewriteRule ^/api.php(.*)$ /api.php$1 [NC,L]
- RewriteRule ^/phpsso_server/index.php(.*)$ /phpsso_server/index.php$1 [NC,L]
- RewriteRule \.php$ - [NC,F]
我已经测试过,对静态网页没有影响,输入任何这四个PHP之外的PHP,全部返回403,如果其它PHP程序需要运行,可以增加rewriterule定义允许其运行.
不允许增加的PHP程序运行还不能完全杜绝入侵,黑客还会修改现有的PHP程序,所以还要把以下文件及目录全部改成不能写入:
- /index.php
- /api.php
- /admin.php
- /plugin.php
- /phpcms/
- /api/
- /phpsso_server/
在程序升级时再打开写入,在这种情况下,黑客通过phpcms漏洞肯定是进不来的了.