php 打开文件 限制,限制文件访问 – 只能通过PHP读取

既然你不能把文件放在你的public_html目录中的任何地方,那么你将不得不采取恐惧/憎恨的“安全隐患”方法

>创建一个随机命名的子目录,将文件存储在:public_html / RANDOMGARBAGE中

>确保目录不可浏览.禁用目录浏览(如果可以),并在其中放置默认文档(index.html?),因此即使打开浏览,您也不会获得目录列表.

>不要使用可猜测的名称存储文件.而不是使用数据库ID存储它们,而是使用盐渍的散列名称存储它们:$crypted_filename = sha1($real_filename.’一些难以猜测的盐文本’); (当然,如果你需要,这会使它更复杂).将原始文件名存储在数据库中.所以你最终得到的结果如下:

的public_html / RANDOMGARBAGE / 5bf1fd927dfb8679496a2e6cf00cbe50c1c87145

的public_html / RANDOMGARBAGE / 7ec1f0eb9119d48eb6a3176ca47380c6496304c8

>通过PHP脚本提供文件 – 永远不要直接链接到哈希文件名

下载

那么:

$fileID = (int)$_GET['fileID'];

$crypted_file = sha1($fileID . 'some hard-to-guess salt text');

$full_path = 'public_html/RANDOMGARBAGE/' . $crypted_file;

if (is_readable($full_path)) {

if(user_is_allowed_to_see_this_file()) {

/// send file to user with readfile()

header("Content-disposition: attachment; filename=$ORIGINAL_FILENAME");

readfile($full_path);

} else {

die("Permission denied");

}

} else {

/// handle problems here

die("Uh-oh. Can't find/read file");

}

这样用户永远不会看到你的“s00per seekrit”文件名是什么,他们只会看到他们的浏览器命中… php?fileID = 37并开始下载秘密文件.pdf

除此之外,您可以偶尔将特殊子目录重命名为其他内容,以及更改salt文本(然后需要使用新的sha1值更新所有散列文件名).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值