我正在寻找类似于这个问题的答案:protect users' file being accessed so only owner can access?
我正在用PHP编写一个Web应用程序,用户可以上传自己的文件或图像,但是如何保护这些文件不被所有者以外的其他人访问。
并且这个问题已被接受的解决方案没问题,因此我将通过一个特殊的脚本“代理”文件请求,该脚本将检查是否允许用户使用此文件。
但我想在不查询数据库的情况下这样做。所以,我想,应该可以检测用户是否可以通过其位置或名称访问文件。
由于具体位置,我无法将所有用户文件放入其名称中包含用户ID的文件夹中,因此我考虑文件名,其中name的一部分将包含用户ID 。所以文件名可以是这样的:
1 _pic.jpg, 2 _pic.png, 1 _pic.gif等,其中名称开头的数字=用户ID
然后我将能够轻松解析文件名,并将用户ID与会话中的用户ID进行比较,并检查用户是否是文件所有者。
您如何看待这种方法,它有什么缺点?
提前致谢!
答案 0 :(得分:1)
只要您只需要检查尝试访问该文件的用户是否是最初上传文件的用户,您的apporach就完全没问题了。确保目录 NOT 可通过文档根目录访问,因此如果脚本或.htaccess文件失败,文件仍然是安全的。还要确保文件名不会与不同的用户发生冲突。
答案 1 :(得分:0)
我无法想象该函数会给数据库增加那么多负载。但是,如果这是一个问题,那么创建一个访问数据库的安全登录系统。每个会话只需要执行一次,因此服务器负载不大。用户登录后,在会话变量中设置一个值,该变量可以从那时开始使用,告诉脚本用户可以访问这些文件。