2014-01-21 92 views
0

我希望nginx拒绝拥有/ webroot/uploads文件夹的用户如何拒绝所有子目录中的脚本执行?

例如,

/webroot/uploads/user1 
/webroot/uploads/user2 
/webroot/uploads/user999 

执行任何shell脚本或二进制文件(php,pl,py)。

恶意代码通常隐藏在JPG或GIF文件。像badfile.php.jpg

我也看到malacious二进制文件被上传到该文件夹​​。

这里我初步的规则:

location ~ /webroot/uploads/(.+)\.php$ { 
deny all; 
} 

location ~ /webroot/uploads/(.+)\.pl$ { 
deny all; 
} 

但我不知道它是足够强大。所以我感谢你的帮助。

回答

1

的nginx没有CGI支持,正是因为这个原因 - 默认情况下,人们不能上传任意脚本或可执行文件,然后运行它们。

如果你有FastCGI的桥,它执行的文件,检查其配置以及是否可以拒绝的webroot/uploads目录。

你也可以强制上传的文件不具有执行位,但(这取决于谁是正在运行的文件,见下文),可能没有帮助。有关详细信息,请使用类似upload_store_access user:rw(详情请参见HttpUploadModule documentation)。

的最后一点是错误配置的一个漏洞,通过这些人可以有随机文件(.php不是终止)由PHP处理程序来执行。请按照this article了解详细信息和正确的配置。

相关问题