我们正在有一个项目,允许用户通过 php 上传将数据备份到服务器,运行在 Linux 服务器上。
如果用户上传任何可执行文件,上传后它将自动重命名为其他名称,并从文件中删除执行权限。
这会导致安全问题。
黑客上传的病毒是否可以在没有执行权限和实际名称的情况下继续工作。
上传位置不是 /var/www,而是在单独的存储设备中。
答案1
我的假设:您正在运行 Apache。
.exe
表明您谈论的是 Windows 可执行文件,但您的标签表明您谈论的是 Linux 服务器。无论您赋予“黑客”什么名称或权限,他们都无法在 Linux 服务器上执行 Windows 可执行文件。
风险不在于他们可以运行代码,风险在于他们可以强制 Web 服务器将文件上传到另一个位置,从而获得任意访问权限。或者,他们可以上传 PHP/其他文件,然后让 Web 服务器执行该文件(不需要执行权限,只需要读取权限)并通过该路径获得访问权限。因此,您需要做的第一件事实际上是确保任何上传的文件都位于 Apache 拒绝读取文件的位置。
针对您的评论,
如果您确保文件上传后位于 Apache 不允许提供内容的位置,或者具有阻止 Apache 读取文件的权限,那么可能会缓解一些问题。
但是请注意,这并不是您需要采取的保护服务器的全面措施,这只是我首先想到的措施。我只是想指出,您的问题表明您没有意识到真正的风险,您可能需要对允许上传内容的 Web 服务进行一些安全研究。