我正在重写一个文件托管网站,我希望能够托管每一种文件类型(而不是只有一个允许的扩展名列表).
我正在运行nginx和linux.网站是用PHP构建的.我禁用了.php文件的上传....但除此之外......还有什么我应该注意的吗?
这是我们在php文件上传系统中阻止的扩展列表.
首先,你最好将文件保存在一个无法访问的文件夹中,这样任何人都无法运行任何上传的文件,然后对每个文件进行强制下载,这样就无法打开.
扩展名单:bat exe cmd sh php 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
这里还有一个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
Run Code Online (Sandbox Code Playgroud)
解决问题的一个更清洁的鬃毛是设置子主机(类似files.somewhere.com)或目录,并通过.htacess禁用执行(用户将能够上传php脚本,但服务器将发送它而不是执行它).