>[danger] 永远不要相信用户提交的数据! ## 安全开发指导 1. 参考ThinkPHP官方[安全指导](https://www.kancloud.cn/manual/thinkphp5_1/354111) 2. 接口接收数据时要对数据进行js脚本过滤 >[info] 以上方法仅作为安全辅助,没有一劳永逸的方法可以防止所有攻击。要做好数据检查,选用合适的过滤方法。 ## 禁止访问敏感目录 由于框架将入口文件从public移动到了应用目录,使一些不该被访问的目录也暴露了出来。如果将入口文件移动到public目录,需要改动的地方比较多,所以不建议这样做。 为了安全考虑,可以将一些敏感目录设置为禁止访问。 【Nginx】 在Nginx配置文件中,加入以下规则 ``` location ^~ /addon{ deny all; } location ^~ /runtime { deny all; } location ^~ /extend{ deny all; } location ^~ /application { deny all; } location ^~ /route{ deny all; } location ^~ /thinkphp { deny all; } location ^~ /vendor { deny all; } ``` 【Apache】 在框架根目录的.htaccess文件加入以下规则 ``` RewriteRule ^addon - [F,L] RewriteRule ^runtime - [F,L] RewriteRule ^extend - [F,L] RewriteRule ^application - [F,L] RewriteRule ^route - [F,L] RewriteRule ^thinkphp - [F,L] RewriteRule ^vendor - [F,L] ``` 完整内容 ``` <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] RewriteRule ^addon - [F,L] RewriteRule ^runtime - [F,L] RewriteRule ^extend - [F,L] RewriteRule ^application - [F,L] RewriteRule ^route - [F,L] RewriteRule ^thinkphp - [F,L] RewriteRule ^vendor - [F,L] </IfModule> ``` ## 系统设置 1. 在config/app.php 文件中deny_module_list 中加入禁止访问模块 2. 在config/app.php 文件app_debug 改为false ## 后台地址重命名 1、public下复制index.php里面的内容新建一个admin.php(**可以自定义,注意与伪静态中的文件名保持一致**), ~~~ Container::get('app')->run()->send(); ~~~ 替换为 ~~~ Container::get('app')->bind('manage')->run()->send(); ~~~ 2、config/app.php deny_module_list 中增加 manage,例如: ~~~ 'deny_module_list' => ['common','crontab','job','manage'], ~~~ 修改 ~~~ 'rename_manage' => true,//后台是否重名了,后台重命名需要开启 ~~~ 3、修改nginx伪静态配置为: ~~~ location / { if (!-e $request_filename){ rewrite ^/admin.php/(.*)$ /admin.php?s=/$1 last; rewrite ^(.*)$ /index.php?s=$1 last; break; } } ~~~ apache的伪静态需要配置为: <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L] RewriteRule ^admin.php/(.*)$ admin.php?s=/$1 [QSA,PT,L] </IfModule>