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漏洞肯定是进不来的了。