最近接手了一个使用ue编辑器的tp项目,并发现了几起恶意上传事件,针对这一情况,做了一些简单优化限制。
未优化之前,百度ue编辑器的上传图片文件功能没有做验证限制,所以所有人都可以拿到上传地址进行随意上传,所以目前的优化方案是把ue编辑器默认的上传文件controller.php里面的内容复制到自定义方法里面,整理为一个可以验证用户是否登录等等的api接口,至于这个api接口放那个位置,就看你们自己了。
新增了单独获取域名的函数getUEBasePath1;
function getUEBasePath1(docUrl, confUrl) {
return document.location.origin;
}
目前简单的优化只是为了防止编辑器的上传功能被滥用,如果有更好的办法,也欢迎各位大佬能够分享一下。
为了防止意外情况发生,可以在upload文件夹里面添加一个.user.ini文件,如果是使用的是宝塔,文件内容如下:
open_basedir=项目路径/upload/:/tmp/:/proc/
添加.user.ini文件后还可以限制upload文件夹里面的脚本查看upload文件夹以外的文件信息。
如果运行环境是apcahe,可以在伪静态文件里面添加如下内容:
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
RewriteRule upload/(.*).php$ – [F]
</IfModule>
如果是nginx环境,可在配置伪静态里面配置以下内容
location /upload {
location ~ .*\.(php)?$ {
deny all;
}
}
配置完伪静态后,可以防止上传的图片转换成php脚本时,阻止其运行。
同理,出了图片文件夹以外,还可以配置如css、js等等文件夹。
后续如果有其他优化的地方,我还会继续更新。