【发布时间】:2016-07-12 10:43:53
【问题描述】:
在我的项目中,用户将上传一个 pdf 文件。这将存储在名为“uploads”的目录中,名称为$_SESSION['userId'].".pdf"。现在用户可以使用'myweb.com/uploads/id.pdf' 访问该文件。但是当用户在浏览器的 url 栏中更改 id 值时,他可以访问其他用户的文件。为了防止它,我想使用一个链接将$_SESSION['userId'] 与隐藏类型发布到下一页。在下一页将使用发布的 id 重定向到文件。
这个想法好吗?或者有没有更好的解决方案?
【问题讨论】:
-
不。因为如果您只是从 URL 中隐藏它,它对您没有帮助。如果用户检查源代码怎么办?考虑一个 ajax 下载,或者更好,如果通过电子邮件发送给他。
-
检查 isset
$_SESSION['userId']并将其与 url 中的 id 进行比较 -
@Sree 是的,这将是我的下一个建议,很明显:)
-
您需要考虑权限 - 在启用下载之前,请检查客户端是否具有这样做的权限(在您的数据库中创建权限表,并将特定文件附加到特定用户)更多信息 - stackoverflow.com/questions/4345322/…
-
永远不要在文件名中保留敏感信息,而是在文件名中给出带有一些自动递增编号的随机文件名,并针对每条记录存储在数据库中。