有关下载的看法

一、下载功能其实很好实现,原来直接将文件的地址直接放在a里就可以实现了。但是这样给系统的安全性带来了不少的隐患。怎样隐藏下载文件的真实地址?

有一种办法,其主要思想是:1.以二进制数据流方式打开欲下载文件。2.按二进制数据流读取,并输出3.输出的内容强制浏览器打开一个下载框,以便下载。

打开一个文件可以用fopen()方法,文件的路径在此方法中以参数的方式传入,这样便实现了隐藏文件真实路径的目的,而不是简单的用a将文件绝对路径暴露。下面是我写的一个简单的下载类:(重要部分已添加说明)

 

<?
class  downLoad {
    
function  downLoading( $fileUrl , $fileName ){
        
// 判断文件是否存在
         if ( $this -> fileExists( $fileUrl , $fileName ) == false ){
        
exit ();
        }
        
// 获得文件大小
         $fileSize   =   filesize ( $fileUrl . $fileName );
        
// 已二进制方式打开文件
         $objDownload   =   fopen ( $fileUrl . $fileName , " rb " );
        
// 发送header
         header ( " Content-type:application/octet-stream " ); // 设置文件类型为二进制数据流
         header ( " Content-length:$fileSize " ); // 文件大小
         header ( " Content-Disposition: attachment;filename=$fileName " ); // 提供推荐的文件名来强制浏览器弹出一个保存文件对话框。
         fpassthru ( $objDownload );
    }
    
function  fileExists( $fileUrl , $fileName ){
        
$what   =   file_exists ( $fileUrl . $fileName );
        
return   $what ;
    }
}
?>

二、虽然实现了文件路径的隐藏,但是还是感到不是十分的安全。

功能1、当该文件需注册后才能下载

session_start ();
if ( ! isset ( $_SESSION [ " loginname " ])){
echo   " 对不起,你无权下载! " ;
exit ();
}
else {
   
$do   =   new  downLoad();
   
$do -> downLoading( " ../download/file " , $_GET [ " filename " ]);
}

功能2.每个用户有自己的下载文件,其他用户不能下载。

功能1可以简单的过滤下载用户,但是只要存在session在url中输入其他文件地址就可以下载其他用户的任意文件了,不好。

失败案例1:我试着禁掉用户在url中输入下载地址:(http_referer为链接到该页的前一页地址,server_name为当前运行脚本所在服务器主机的名称。当前一页中以a链接至此页时http_referer有值,而当使用页面刷新、header、javascript时http_referer不存在!这三种方式在IE中不会视为事件使http_referer产生值!)

$serverName   =   $_SERVER [ ' SERVER_NAME ' ];
$httpReferer   =   $_SERVER [ ' HTTP_REFERER ' ];
$requestArray   =   explode ( " / " , $httpReferer );
$requestSN   =   $requestArray [ 2 ];
if ( $httpReferer == "" || $requestSN != $serverName ){
echo   " 非法链接! " ;
exit ();
}

这样只有在用户在本站中有<a href=""></a>链接时才能下载该文件,其他网站的盗用或着url直接输入不会下载该文件。(假设本站不会提供其他用户资源的a链接,只提供该用户自己的资源链接地址)用户在想要非法下载其他用户的资源时,一般会在url中输入地址,这样貌似解决了功能2的需求,但是当使用迅雷工具下载时,在其提供的url输入地址却任然可以下载其他用户资源,这是因为,当以迅雷下载时,可以看做触发了a时间http_referer不为空!

2.其他思想:

想用户下载资源似有化貌似只能使该用户id对应自己相应的资源。

方法1.存储一个用户下载列表。当下载时比对。

方法2.使用标志位来命名资源。当下载是判断。

方法3.使用linux中的权限控制。(未实现)

以上纯属个人看法,忘大虾务笑。下载安全问题一直是块心病,倘若有更好的方法,还忘高人指教。小弟谢过。

基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip 【备注】 1、该资源内项目代码百分百可运行,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
T6 数据库字黄下载是指从T6数据库中获取有关“黄”字的相关信息并进行下载的操作。在数据库中,字黄可能代表了一个特定的含义、概念或者实体,我们可以通过下载数据库中与黄字相关的数据来进一步研究、分析或者使用这些数据。 通过T6数据库字黄下载,我们可以获得与“黄”字相关的各种数据,如文本、图片、视频等。这些数据可能来自于不同的来源,包括但不限于文献、新闻报道、社交媒体等。这些数据可以帮助我们了解黄字在不同背景下的具体含义及相关信息。 通过数据库字黄下载,我们可以进行各种数据分析和处理。例如,我们可以对文本数据进行文本挖掘,提取与黄字相关的关键词、主题或情感,从而揭示社会对黄字的态度和看法。另外,我们还可以使用图片和视频数据进行图像识别和视频内容分析,从而进一步了解黄字的视觉表达形式和相关特征。 数据库字黄下载还可以用于各种应用场景。例如,在信息安全领域,我们可以使用下载的数据来研究和预测可能出现的网络攻击,以保护用户免受不良信息的侵害。在教育领域,我们可以利用这些数据来开展相关课程和研究,提高学生对于黄字与相关问题的认识和理解。 总之,T6数据库字黄下载是一项重要的数据操作,通过这一操作我们可以获得关于“黄”字的丰富信息,并进行相关的数据分析和应用。这为我们深入研究和利用黄字数据提供了有力的支持和资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值