我开发了一个 Web 应用程序,让用户可以上传图像并对其进行转换,以便稍后再次下载转换后的图像。显然,我必须授予 apache 用户对用户可以上传的目录的权限:
$ chown root:www-data uploadFolder
$ chmod 1775 uploadFolder
这样就赋予了 apache 组除删除之外的所有权限。
应用程序在uploadFolder
目录内为每个用户会话创建一个具有0700
权限的目录,并将用户的图像保存在里面。
位于uploadFolder
应用程序目录内。
当图像上传时,它会直接(像链接一样)提供给客户端。
crontab 作业每 20 分钟执行一次脚本,检查哪些会话处于活动状态并删除其中与uploadFolder
任何活动会话不匹配的所有文件和文件夹。
自两个月前以来它一直运行良好,但我不确定它是否会对我的应用程序、数据库或同一 VPS 中的其他站点造成危险。
有人知道在这种情况下放纵自己的风险吗?
有没有什么办法可以避免这种情况?
这是我的 apache 站点配置:
<VirtualHost *:80>
ServerName www.itransformer.es
ServerAlias itransformer.es *.itransformer.es
DocumentRoot /siteFolder
<Directory /var/www/itransformer-2.0/web>
AllowOverride all
Options -Indexes
</Directory>
</VirtualHost>
将此代码片段添加到 Apache 站点配置中:(这应该避免读取.htaccess
文件)
<Directory /uploadFolder>
AllowOverride none
Options -Indexes
</Directory>
答案1
首先,您应该了解安全是一个过程,您需要在开发的各个阶段和各个层面牢记这一点。阅读并理解OWASP 前 10 名应用程序安全漏洞,并在考虑这些漏洞的情况下检查您的代码,包括全局(您的整个应用程序)和本地(您的应用程序的各个部分)。当然还有其他安全漏洞,因此您应该记录下来。
如果没有任何代码,并且只有非常笼统和不精确的描述,那么就不可能就此主题提供良好的建议,就像您在这里所做的那样。对于您的情况,我会特别注意目录遍历、XSS 等,但请记住风险可能来自应用程序的任何地方。
实际上你可能想要在 chroot jail 中运行 apache,我还会上传一些随机生成的名称而不是用户提供的名称的文件夹(从您问题的更新来看,您确实已经这样做了)。总而言之,请记住,这只会使您可能仍然存在的任何漏洞更难被利用,但不能完全阻止它们。