H1!我考虑过雇用一个托管来建立我开发的网站,该网站有一个登录系统。 当用户访问时,将显示指向他们只能看到的文档的链接(链接)。
我的问题是:如果所有用户的所有文件都包含在托管文件夹中,我如何阻止某人直接在地址栏中输入文件路径并直接访问它而不记录任何内容?
我的方法是将文件路径放在链接href中。还有另一种方法可以验证来自php的访问权限吗?
谢谢!
答案 0 :(得分:1)
我对此问题的解决方案是编写.htaccess,拒绝对文件夹进行所有直接访问(deny all
)。
之后编写一个脚本,对文件名进行盐分和哈希处理,并将其添加到php文件将作为getparam以及名称本身所在的链接(例如/get-file?name=[filename here]&hash=[hash here]
)
然后编写一个脚本,该脚本经历了使用salt对名称进行哈希处理的相同过程,然后通过get查看输入文件的哈希是否与输入的哈希相匹配
希望这可以帮到你!
编辑:您必须在发送文件时发送标题Content-type:[file mime]
和Content-Disposition: attachment; filename="[filaneme]"
,之后您可以打开文件,例如。与echo file_get_contents();
。
这实际上允许您将文件放在服务器上的任何位置,这意味着您也可以在public_html路径之前隐藏它们,从而无需使用.htaccess