文件安全之只允许网站内打开,禁止单独打开下载

news/2024/5/11 19:17:47/文章来源:https://blog.csdn.net/u010757785/article/details/111990730

有时候我们并不想一个网站文件,禁止单独打开,

举例:ios潮汐的音频文件,按道理都是收费的,肯定禁止别人通过某些手段获取到文件,但是潮汐目前大部分都能在web里面抓包抓取到,并且提取出来

这么防止这种数据安全呢?今天就拿我唯一玩的比较熟悉的语言php做一个demo释放:

 

1:首先,我们就拿laravel框架举例,例如我在 我在项目app文件夹下新建了一个文件default_thumb

2:在nginx里面配置路由重点  internal;

        location /default_thumb {root   D:/phpstudy_pro/WWW/bamboo/app;add_header  Content-Type 'image/png';#下面可以先注释,直接浏览器打开default_thumb文件夹下一站图片尝试,是否可以打开,可以打开后在去掉前面的#号#internal;}

 3:例如我们/default_thum文件夹下面有一个containers文件夹,下面有1_demo.jpg的图片一张

假设当前网站url访问路径是dd.com,那么浏览器访问:http://dd.com/default_thumb/containers/1_demo.jpg 

4:如果访问能成功,这里就可以把nginx里面的internal;前面#去掉

5:重启nginx,在访问是不文件已经不能访问了,这就需要代码解决了访问问题了

 

6:在项目新建一个控制器,新建一个方法:例如新建了image控制器,preview方法,参考代码如下

 

class ImageController extends Controller
{/*** 获取图片* @param string $path* @return JsonResponse* @date 2020/12/17 19:38*/public function preview($path = ''){$path = base64_decode($path);if (empty($path)) {return $this->formatReturn(['state' => false,'error' => '图片路径为空']);}$imagesPath = explode('/', $path);//便于windows和linux系统转义符问题 linux可去掉$path = implode(DIRECTORY_SEPARATOR, $imagesPath);//app_path()方法注解  app('path').($path ? DIRECTORY_SEPARATOR.$path : $path);$src = app_path('default_thumb' . DIRECTORY_SEPARATOR) . $path;$delimiter = DIRECTORY_SEPARATOR . 'default_thumb' . DIRECTORY_SEPARATOR;if (!file_exists($src)) {return $this->formatReturn(['state' => false,'error' => '对应图片不存在']);}$filename = end($imagesPath);$ext=explode('.', $filename);$fileExt = end($ext);$mimeTypeArr = array('png' => 'image/png','gif' => 'image/gif','jpg' => 'image/jpeg','jpeg' => 'image/jpeg',);$mimeType = isset($mimeTypeArr[$fileExt]) ? $mimeTypeArr[$fileExt] : 'image/jpeg';//便于windows和linux系统转义符问题在转换回来 linux可去掉$path=$delimiter.$path;$filepath = implode('/', explode(DIRECTORY_SEPARATOR, $path));// 下载//header("Content-Disposition: attachment; filename= '{$filename}'");// 内嵌header("Content-Disposition: inline; filename= '{$filename}'");header("Content-Type:" . $mimeType);header('X-Accel-Redirect:' . $filepath);header("X-Accel-Buffering: yes");header("X-Accel-Limit-Rate :102400"); //速度限制 Byte/s}public function formatReturn(array $params, $cookie = ''){if (!isset($params['code'])) {$params['code'] = '';}if (isset($params['error']) && strpos($params['error'], 'SQLSTATE')) {if (env('APP_ENV') != 'local') {$params['error'] = '数据库查询有误';}}if (empty($cookie)) {return response()->json($params);} else {return response()->json($params)->cookie($cookie);}}

7:有了控制器和方法,在配置路由,就假设在 在web.php里面新加路由

Route::get('image/{path?}', "ImageController@preview");

8:做好了这些,看到路由后面只能接收一个参数,而且加上nginx配置了/default_thumb  所以访问http://dd.com/default_thumb/containers/1_demo.jpg 

需要把containers/1_demo.jpg 这个去解析成一个字符串,控制器方法里面是base64的,这里我们就拿到https://base64.us/,里面去编码一下,

结果就成了Y29udGFpbmVycy8xX2RlbW8uanBn

10:浏览器按照路由输入:https://dd.com/image/Y29udGFpbmVycy8xX2RlbW8uanBn 结果如下图,到这里就结束了,记住nginx里面internal;很重要

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_832260.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大型网站架构体系的演变(下)

接着上篇的继续在做扩展满足了基本的性能需求后,我们会逐渐关注“可用性”(也就是我们通常听别人吹牛时说的SLA、几个9)。如何保证真正“高可用”,也是个难题。几乎主流的大中型互联网公司,都会有用到类似的架构&#…

大型网站架构体系的演变(上)

互联网上有很多关于网站架构的各种分享,有些主要是从运维和基础架构的角度去分析的(堆机器,做集群),太关注技术细节实现,普通的开发人员基本看不太懂。本文上篇将主要介绍大型网站基础架构的扩展&#xff0…

Web应用防火墙-网站安全防护

2019独角兽企业重金招聘Python工程师标准>>> Web应用防火墙简称WAF。Web应用防火墙是集WEB防护、网页保护、负载均衡、应用交付于一体的WEB整体安全防护设备的一款产品。 它具有异常检测协议 、增强输入验证、及时补丁等优势功能。 我使用过 Imperva-Incapsula Web应…

HTML5内嵌文本编辑器(H5文本编辑器 俗称手机版网站专用)

1.这个编辑器用的是KindEditor 先看下效果: 2.准备: a):从官网下载KindEditor———>http://kindeditor.net/down.php b):解压到桌面测试文件夹下的plugin文件夹下(解压到其他地方也可以) c)&#xff1a…

Linux系统搭建的网站出现 403 Forbidden 错误的解决办法(亲测可行)

一般nginx 的 403 Forbidden errors 表示你在请求一个资源文件时,nginx不允许你访问。 403 Forbidden 只是一个HTTP状态码,像404,200一样不是技术上的错误。 关于 403 状态码的解析? 1、网站禁止特定的用户访问所有内容,例&#…

php建站: 2019年最好用的6个php环境搭建工具推荐

对于php开发初学者来说搭建一个php运行坏境就是一道坎!因为要做php开发,搭建一个能够运行php网站的服务器环境是第一步,传统的php环境软件非常复杂,好在很多公司开发了一键搭建php安装环境,一键进行php环境配置&#x…

电商网站秒杀与抢购的系统架构

一、大规模并发带来的挑战在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整个Web系统遇到了很多的问题和挑战。如果Web系统不做针对性的优化,会轻而易举地陷入到异常状态。我们现在一起来讨论下,优…

10个最佳的网站和App开发工具

这个世界充满了创新,开发的激情和决心是实现更高目标的关键因素。在网站开发中,毫无疑问,工具和可用的在线网页和app设计资源,发挥了重要的作用。下面我们将带来一些网站和app的最佳工具。1.PowerMockup这是一个线框和可用于Power…

大型分布式网站架构技术总结

本文是学习大型分布式网站架构的技术总结。对架构一个高性能,高可用,可伸缩,可扩展的分布式网站进行了概要性描述,并给出一个架构参考。一部分为读书笔记,一部分是个人经验总结。对大型分布式网站架构有很好的参考价值…

Python爬虫爬取美剧网站

一直有爱看美剧的习惯,一方面锻炼一下英语听力,一方面打发一下时间。之前是能在视频网站上面在线看的,可是自从广电总局的限制令之后,进口的美剧英剧等貌似就不在像以前一样同步更新了。但是,作为一个宅diao的我又怎甘…

5个可以帮你优化App的优秀网站

也许现在有一款App可以提供所有你需要的,你不需要的,或者你可以想象到的内容。但是,有多少App真的可以不仅满足需求而且还能提供很好的用户体验呢? 相信很多APP并没有这样的能力。有一些APP的设计特别烂,以至于用户很难去完成一些…

11个最值得Java开发者收藏的网站

概述:Java是一种面向对象的编程语言,由Sun Microsystems公司在1995年的时候正式发布。直到今天,Java都一直是最受欢迎的编程语言之一。如今,Java应用于各种各样的技术领域,例如网站开发、Android开发、游戏开发、大数据…

30分钟让网站支持HTTPS

转载自码农网这里我会指导大家如何轻松搞定在你的网站上使用HTTPS。我不是安全专家也不是搞服务器的,所以这对我而言也是一种有趣的经历,而记录这个过程可以让其他任何人也能很快地做到这些。包括一些暂时的停顿时间,我总共只花了20-30分钟。…

「镁客早报」特斯拉标准版Model3正式上市,售价3.5万美元;百度被爆搜索小学和幼儿园会导向色情网站...

Facebook、谷歌在英国或将面临数十亿美元罚款;自动驾驶创业公司DriveAI寻求“卖身”,曾估值2亿美元。 1、特斯拉标准版Model3正式上市,售价3.5万美元 今日,特斯拉宣布标准版Model3正式上市,售价为3.5万美元。目前&am…

跨屏网站建设要如何规划,注意5点

2019独角兽企业重金招聘Python工程师标准>>> 跨屏网站建设该怎么规划?在建设跨屏网站的时候要如何做才可以让用户拥有更高的体验度?确实,想要设计出一个优质的跨屏网站的话需要注意的细节是非常多的,我们首先要做的是对…

2021 chrome 更新跨域规则,将对网站造成影响

chrome 更新跨域规则,将对网站造成影响 在 chrome v94 之后,之前没有问题的网站接口请求现在出现了错误: Access to Css stylesheet at ‘http:xx’ from origin ‘http://xx‘ has been blocked by CORS policy: The request client is not…

聊聊制作网站那些事

点击链接:我的第一个响应式网站 直接开门见山也不啰嗦了。 有很多小伙伴都问我响应式网站怎么做?但是做响应式网站又并非易事。 自己做响应式网站分为两种: 一、自己动手一个一个代码打出来,这种情况下你的网站实现响应式的几…

由于您访问的url有可能对网站造成安全威胁_网站索引量下降怎么办?

导致百度索引量下降的常见原因--一、网站方原因1、内容数据所在的网址url未规范统一【自己站点url规范统一】多域名都可以200状态正常访问网页内容;一域名下出现多种url形式可以访问相同内容,如大小写url、url规则变更等。解决:选择主域名(或…

python能开发网站吗_python可以开发网站吗

python可以开发网站,python在web开发方面强大的开发框架是django。做网站开发之前,同样要掌握一些python的基础语法。 1、python基础,因为用python开发的,所以python指定要会,最起码你也得会条件判断,循环&…

配置ssl证书_给自己的网站主页配置ssl证书

使用https?可以防止数据在传输过程中产生一些不必要的泄露,未?的页面在经过ssl证书的签发后会变成https开头,下面记录一下配置https加密的整个过程购买域名首先第一步我们为了防止自己的公网ip暴露出去,需要给自己的网站设定一个全球唯一的…