我有一个表单,可以将图片上传到我的 Gnu/Linux 主机上的上传文件夹。
当用户注册时,它会在上传中为他们创建一个文件夹,并将他们的图片放入其中。
我已经禁用了索引并混淆了它的位置;但目前如果您知道文件的路径,例如website.com/uploads/user3/photo.png
,则可以访问它。我需要对用户文件夹及其内容设置哪些权限以防止被窥探?为了使上传功能在全局范围内工作,需要读取和写入(这很烦人),因此请考虑到这一点。
从我看来,人们应该很难找到这些图像的文件名(没有索引等),但尽管如此,如果他们这样做了,他们将能够查看/下载它们。
任何其他提示表示赞赏。
顺便一提;由于某种原因,我的主机似乎不允许 setfacl,之前的问题建议将此作为答案。
答案1
有一个简单的解决方案,不需要任何与文件系统权限相关的操作:只需将上传路径更改为文档根目录之外的某个位置即可。如果经过身份验证的用户确实需要通过 Web 查看它们,则在验证其身份验证后让服务器端 Web 代码包含它们。
答案2
这似乎不是一个可以通过文件权限来解决的问题。您需要在网络应用程序中解决它。如果网络应用程序需要访问权限,那么它就需要访问权限。 Web 应用程序将知道哪个用户登录到 Web 应用程序(这与 Unix 用户不同:Web 应用程序将作为一个 Unix 用户运行)。
技术一:使用散列或大随机数作为文件名。这是不可能猜测的,但如果有人知道这个名字,仍然可以访问。
技术二:使用安全库/框架来管理它。
至于setfacl
,它要么没有安装,要么没有在文件系统上启用,或者没有在内核中启用。