如何实现网站的防盗链

news/2024/5/20 5:35:17/文章来源:https://blog.csdn.net/weixin_46663768/article/details/105907975

如何实现网站的防盗链

背景

A是网站站长,在A的网站的网页里有一些图片和音频视频的链接,这些静态资源都保留在阿里云对象存储OSS上。B是另一个网站的站长,B在未经A允许的情况下,偷偷使用A的网站的图片资源,放置在自己网站的网页中,通过这种方法盗取空间和流量。 在这样的情况下,第三方网站用户看到的是B的网站,网站用户不知道也不关心网站里的图片是来自于哪里。 由于OSS是按照使用量来收费的,这样用户A在没有获取任何收益的情况下,反而承担了资源使用费用。A站应该怎么办呢?

本文就是介绍类似A这样的用户将资源存放在OSS上后,如何设置防盗链来避免这样情况的发生。 本文适用那些在网页中使用了OSS资源作为外链的用户。

具体方案

目前OSS提供的防盗链的方法主要有两种:

  1. 设置Referer。控制台,SDK都可以操作,适合不想写代码的用户,也适合喜欢开发的用户;
  2. 签名URL,适合喜欢开发的用户。

本文会给一个控制台设置Referer防盗链的具体事例,也会基于PHP SDK给一个动态生成签名URL防盗链的示例。

通过Referer防盗链的具体步骤

第一步:进入 OSS 管理控制台界面。

第二步:单击目标存储空间的名称进入存储空间管理页面。

第三步:单击 Bucket 属性 > 防盗链设置。

068943851525b0a0ffa6efefb183df0d5a2d3295

第四步:单击“设置”添加白名单网址并设置是否允许其为空。

264aaf0f0503e8f163bef94c7c7d4c5797da15bf

第五步:单击“提交”保存对防盗链的设置。

举例

对于一个名为test-1-001的存储空间,设置其referer 白名单为 http://www.aliyun.com。则只有 referer 为http://www.aliyun.com的请求才能访问oss-example这个存储空间中的对象。

签名URL实现步骤

签名URL的原理和实现方法见OSS开发人员指南授权第三方下载。 签名URL的实现步骤:

1、将Bucket的权限设置为私有读;

2、 根据期望的超时时间(签名URL失效的时间)生成签名。

具体实现

第一步:安装PHP最新代码,参考PHP SDK文档;

第二步:实现生成签名URL并将其放在网页中,作为外链使用的简单示例:

<?phprequire 'vendor/autoload.php';#最新PHP提供的自动加载
use OSS\OssClient;#表示命名空间的使用
$accessKeyId="a5etodit71tlznjt3pdx7lch";#AccessKeyId,需要使用用户自己的
$accessKeySecret="secret_key";#AccessKeySecret,需要用用户自己的
$endpoint="oss-cn-hangzhou.aliyuncs.com";#Endpoint,根据Bucket创建的区域来选择,本文中是杭州
$bucket = 'referer-test';#Bucket,需要用用户自己的
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);$object = "aliyun-logo.png";#需要签名的Object
$timeout = 300;#期望链接失效的时间,这里表示从代码运行到这一行开始的当前时间往后300秒
$signedUrl = $ossClient->signUrl($bucket, $object, $timeout); #签名URL实现的函数$img= $signedUrl;#将签名URL动态放到图片资源中并打印出来
$my_html = "<html>";$my_html .= "<img src=\"".$img. "\" />";$my_html .= "<p>".$img."</p>";$my_html .= "</html>";echo $my_html;?>

第三步:通过浏览器访问 多请求几次会发现签名的URL会变,这是正常的。主要是因为过期时间的改变导致的。这个过期时间是链接失效的时间,是以unix time的形式展示的。 例如:Expires=1448991693,可以将这个时间转换成本地时间。在Linux下的命令为date -d@1448991693,也可以在网络上找工具自行转换。

特别说明
签名URL可以和Referer白名单功能一起使用。

如果签名URL失效的时间限制在分钟内,盗链用户即使伪造了Referer也必须拿到签名的URL,且必须在有效的时间内才能盗链成功。 相比只使用Referer来说,增加了盗链的难度。 也就是说签名URL配合Referer白名单功能,可以增加防盗链的效果。

防盗链总结

基于OSS的防盗链最佳实践点如下:

  • 使用三级域名URL,例如referer-test.oss-cn-hangzhou.aliyuncs.com/aliyun-logo.png,安全性比绑定二级域名更高。三级域名方式能够提供Bucket级别的清洗和隔离,能够应对被盗链后的流量暴涨的情况,也能避免不同Bucket间的互相影响,最终提高业务可用性;
  • 如果使用自定义域名作为连接,CNAME也请绑定到三级域名,规则是bucket + endpoint。假如你的bucket名为test,三级域名则为test.oss-cn-hangzhou.aliyuncs.com;
  • Bucket设定尽可能严格的权限类别。例如提供公网服务的Bucket设置为public-readprivate,禁止设置为public-read-writeBucket权限参见访问控制;
  • 对访问来源进行验证,根据需要设置合适的Referer白名单;
  • 如果需要更严格的防盗链方案,请参考签名的URL方案;
  • 记录Bucket访问日志,能够及时发现盗链活动和验证防盗链方案的有效性。 访问日志参见设置访问日志记录。

常见问题及解决方案

:在OSS控制台设置了防盗链,一直不生效,但页面可以防但是播放器不可以,请问为什么?怎么解决?

:目前设置防盗链不生效的主要问题集中于视频和音频文件, 在使用诸如windows media player,flash player等播放器后,在请求OSS资源的时候传递的Refer为空,这就造成防盗链的失效, 不仅仅把别人防住了,也把自己给防住了。针对这种情况,可以参考上面提到的签名URL防盗链的方法。

:Referer是什么?怎样才会带上?如果遇到HTTPS怎么办 不需要添加别的了吗,比如逗号之类的?

:Referer是HTTP协议中的请求头,在跨页面访问的时候会带上。需要看看浏览器请求的Referer是http://还是https://,一般是http://。

:如何生成签名URL?AccessKeySecret放在客户端里的安全性?

:签名URL的方法参见各个SDK文档。AccessKeySecret这种不建议直接放在客户端,RAM提供了STS服务可以解决这个问题。也可以参考RAM和STS指南

:例如要写a.baidu.com和b.baidu.com,这两个用通配符(*,?) 如何写?

:可以写成http://*.baidu.com,对于这种单字符的也可以写成http://?.baidu.com

:*.domain.com 可以匹配二级域名,但无法匹配 domain.com 另外添加一行 domain.com 也没效果,如何配置?

:注意一般的referer中会带http这样的参数,可以通过chrome的开发者模式观察下请求的Referer是什么,然后再具体设置。这里可能是忘了写http://,应该为http://domain.com

:如果防盗链没有生效怎么办?

:推荐使用chrome来查看。打开开发者模式,点击网页,查看HTTP请求中的Referer具体值是什么,对应在OSS中设置的Referer,是否能匹配上。如果还是解决不了,提工单。

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

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

相关文章

使用selenium爬取fofa中链接的网站正文

如题,可能有人不明白啥意思,看下图,本文就是爬取fofa中红色圈圈的内容,红色圈圈是fofa存储的其他链接的HTML,点击这个图标就会弹出界面,界面里面就是HTML,我们就是爬这个东西。 由于登录后只能爬5页,所以我们只爬5页。 import requests from bs4 import BeautifulSoup…

使用selenium爬取fofa中的网站链接

上一次爬取fafo给的HTML是被处理过的,不能用,这次我们直接爬取他们给到网站链接,然后自己去爬ip的网站 由于登录后只能爬5页,所以我们只爬5页。 import requests from bs4 import BeautifulSoup from selenium import webdriver import os,time import pandas as pd from …

搭建个人网站

转自知乎 诸葛小猿 nox小白 进行了一些小改 一、搭建个人网站 1.阿里云学生机轻量级服务器的初始化 购买了阿里云轻量级服务器&#xff0c;相当于我们有了硬件服务器&#xff0c;接下来我们要使用阿里云的轻量级服务器的管理页面&#xff0c;将操作系统等装好&#xff0c;这个…

如何搭建一个自己的网站

下边是我搭建的一个简单的小网站 附上网址&#xff1a;http://lianglv.top/ 点击跳转 准备&#xff08;需要下载的工具&#xff09; 百度网盘下载需要的工具&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1wEK9BMD70gmmIEiVHSbZLA 提取码&#xff1a;pyx3 包含&am…

10大最佳技术应用网站(除年度最佳外,其余按首字拼音顺序排列)

10大最佳技术应用网站&#xff08;除年度最佳外&#xff0c;其余按首字拼音顺序排列&#xff09; 入围名单&#xff08;按首字拼音顺序排列&#xff09;: 163邮箱 爱迪网 百合在线 BlogBus 豆瓣网 FeedSky 快钱 Lava-Lava 猎户星在线写诗机 六间房Alpha 2.0 民生银行网上银行 奇…

MySQL在大型网站的应用架构演变

写在最前&#xff1a; 本文主要描述在网站的不同的并发访问量级下&#xff0c;MySQL架构的演变。 可扩展性 架构的可扩展性往往和并发是息息相关&#xff0c;没有并发的增长&#xff0c;也就没有必要做高可扩展性的架构&#xff0c;这里对可扩展性进行简单介绍一下&#xf…

云服务器docker自建一个博客网站

最近在一位大佬的帮助下起了一个自己的博客网站&#xff0c;感觉非常好用&#xff0c;特地记下来 先租用一个服务器&#xff0c;配置可以参考这个&#xff0c;腾讯云我这个59一年 然后找到对应linux版本的docker&#xff0c;进行安装&#xff0c;我这个是Centos&#xff0c;菜…

企业怎么样建设一个好的网站,需要注意什么?

企业网站的建设就是要展现自己的形象&#xff0c;为了强调自己的企业实力&#xff0c;你觉得&#xff0c;现在找工作的人都知道百度搜索&#xff0c;先看看公司的官方网站&#xff0c;不管是骗子&#xff0c;还是外壳公司&#xff0c;如果不是&#xff0c;你认为人们敢相信你呢…

企业网站建设做手机站有何优势,网站建设有哪几种方式

现如今是互联网高速发展的时代&#xff0c;通过互联网企业可以获得更多的利益&#xff0c;特别是现在移动互联网也在飞快发展&#xff0c;可以说是占据了互联网的大部分流量&#xff0c;这么大的市场相信无论大企业还是中小企业都不想放过的。加上现在每天利用手机上网的用户达…

影响网站自然排名你不得不知的几个因素分析

随着互联网信息科技的不断进步&#xff0c;搜索引擎也变得越来越智能化了&#xff0c;想要知道什么&#xff0c;看到什么信息&#xff0c;只要一搜就有一堆信息呈现在眼前。那么对于各个企业的网站来说&#xff0c;怎么样才可以优化网站自然排名&#xff0c;让网站在搜索引擎拥…

推荐一个在线收藏 RSS 的网站--抓虾

摘要: 从这里进入抓虾 也许你以前对 RSS 已有所了解或者正在使用它&#xff0c;要是还不知道 RSS 是什么 &#xff0c;那要补习一下了&#xff1a; 阅读全文 -------------------------- 新闻&#xff1a; Firefox 3.5&#xff1a;很快 但还是不够 网站导航: 博客园首页…

谈一下关于个人网站实现免签支付接口自动收款

由于本人有一个项目需要用到支付收款功能&#xff0c;只有企业资质才能申请支付宝和微信支付接口&#xff0c;我也看了下市面上的 一些个人收款码的方案&#xff0c;来实现自动收款&#xff0c;感觉这样做有很大的风险&#xff0c;用个人码收款也会让人感觉项目网站不太正规 我…

小编闲谈——刷题网站

刷题网站 前言洛谷领扣dotcpp信息学奥赛一本通 前言 最近疫情很紧&#xff0c;小编所在的楼都被封了。最近闲的慌&#xff0c;于是整理出来了几个常用的刷题网站&#xff0c;如下&#xff1a; 洛谷 洛谷网站主战 里面有为数众多的题目&#xff0c;题目类型包括贪心、宽搜、队…

python爬虫实例--tencent网站招聘信息

学习python爬虫一段时间了&#xff0c;想做个实例巩固一下所学的知识。 爬取对象&#xff1a;腾讯招聘网站 不知道是不是被爬的多了&#xff0c;这个网页变动挺大的。 &#xff08;网上搜到的那些爬虫代码已经不好使了&#xff0c;๑乛◡乛๑&#xff09; 代码如下&#xf…

有趣的网站404错误设计欣赏

如果一个用户看到一个普通的404错误页面他或许不会多做一些停留。而如果一个有创造性的404页面它肯定会激发访客多做一些停留来研究这个页面。所以想让你的404页面多一些访客量停留那就在上面多一些创造性的空间。 今天站长素材专门收集了50个很有趣的404创意页面&#xff0c;里…

无聊了 挨个网站点点登陆一下看看账号还活没活着=。=

找了些稍微有技术性的网站论坛登陆一下 看看还有没有自己的账号 哈哈 继续补充中。。。 &#xff08;一&#xff09;CSDN 注册3年了 不停的潜水 不停的潜 这个账号很久没用了 为什么呢 因为下载资源的分都成负的了 看帖不回贴的后遗症 &#xff08;二&#xff09;设计中国挺不错…

asp.net 2.0 多语言网站的解决方案

asp.net 2.0中的App_GlobalResources可以用来解决本地化的问题,程序会根据浏览器的语言首选项自动判断显示出本地化的界面。 首先在App_GlobalResources新建resx资源文件。如: 不同语言的resx中项目应该具有相同的名称: 中文资源项 英文资源项 完了以后就可以使用这些名…

鹰潭seo来这扎根了

鹰潭seo来这扎根了&#xff0c;从今以后鹰潭seo每天都会跟大家分享seo知识&#xff0c;请朋友们多多关照&#xff01;&#xff01;&#xff01;

为什么谷歌不收录你的网站

鹰潭seo网站是在2013年4月2日正式上线的&#xff0c;就在运营了10多天的时候成功的被百度收录了首页。但是很长时间发现谷歌就是不收录我的&#xff0c;因为之前我以为谷歌收录会经过一段时间&#xff0c;直到有一天我朋友的站&#xff0c;还不到一个礼拜就被谷歌收录了&#x…

seo的核心思想是什么

搜索引擎是seo的上帝&#xff0c;他们之间不是对立关系 用户是搜索引擎的上帝&#xff0c;而搜索引擎则是seo的上帝。为什么这么说呢&#xff1f;我们做seo&#xff0c;那seo带来的流量是不是搜索引擎给的&#xff0c;搜索引擎为什么把流量给你&#xff0c;只能是我们帮助它服务…