我正在重写文件托管网站,我希望能够托管每种文件类型(而不仅仅是拥有允许扩展名的列表)。
我正在运行nginx和linux。网站是用PHP构建的。我禁止上传.php文件....但除此之外....还有什么我应该注意的吗?
答案 0 :(得分:7)
以下是我们在php文件上传系统中阻止的扩展列表。
首先,您最好将文件保存在无法访问的文件夹中,这样任何人都无法运行任何上传的文件,然后对每个文件进行强制下载,这样就无法打开。
扩展名单: 蝙蝠 可执行程序 CMD SH PHP PL CGI 386 DLL COM 激流 JS 应用 罐 PIF VB VBScript中 WSF ASP CER 企业社会责任 JSP DRV SYS ADE ADP BAS CHM CPL CRT CSH FXP HLP HTA INF 插件 ISP JSE htaccess的 htpasswd的 KSH LNK MDB MDE MDT MDW MSC MSI MSP MST OPS PCD PRG REG SCR SCT SHB SHS 网址 VBE VBS WSC WSF WSH
这里还有一个Javascript正则表达式:
/(\.|\/)(bat|exe|cmd|sh|php([0-9])?|pl|cgi|386|dll|com|torrent|js|app|jar|pif|vb|vbscript|wsf|asp|cer|csr|jsp|drv|sys|ade|adp|bas|chm|cpl|crt|csh|fxp|hlp|hta|inf|ins|isp|jse|htaccess|htpasswd|ksh|lnk|mdb|mde|mdt|mdw|msc|msi|msp|mst|ops|pcd|prg|reg|scr|sct|shb|shs|url|vbe|vbs|wsc|wsf|wsh)$/i
答案 1 :(得分:6)
解决问题的一个清洁工是设置子主机(类似files.somewhere.com)或目录,并通过 .htacess 禁用执行(用户可以上传php脚本,但服务器将发送它而不是执行它。)
答案 2 :(得分:2)
这里最好的方法是: