赞
踩
防盗链通过设置Referer列表(包括白名单Referer和黑名单Referer)以及是否允许空Referer的方式,限制您Bucket内资源的访问来源,避免Bucket内的资源被其他人盗用。
开启防盗链后,OSS会根据请求Header中的Referer地址判断访问来源的方式,确定是否允许当前请求。具体流程如下图所示。
同源检测 跨域访问是浏览器出于安全考虑而设置的一个限制,即同源策略,是用于隔离潜在恶意文件的关键安全机制。当A、B两个网站属于不同域时,来自于A网站页面中的JavaScript代码访问B网站时,浏览器会拒绝该访问。
同协议、同域名(或IP)以及同端口视为同域。两个页面的协议、域名和端口(如果指定了端口)相同,则视为同源。下表给出了相对http://www.aliyun.com/org/test.html
的同源检测示例:
URL | 访问是否成功 | 原因 |
---|---|---|
http://www.aliyun.com/org/other.html | 是 | 协议、域名、端口相同 |
http://www.aliyun.com/org/internal/page.html | 是 | 协议、域名、端口相同 |
https://www.aliyun.com/page.html | 否 | 协议不同(HTTPS) |
http://www.aliyun.com:22/dir/page.html | 否 | 端口不同(22) |
http://help.aliyun.com/dir/other.html | 否 | 域名不同 |
从上表中可以看出,协议、域名或者端口不同的情况下,浏览器会拒绝该来源的访问。如果要允许这些来源的访问,需要设置跨域规则。
配置访问请求来源的域名(即Referer黑名单和白名单),实现对访客身份的识别和过滤,限制访问CDN资源的用户,禁止其他网站引用您的资源链接。
URL鉴权是指用户按照指定的签名方式对于特定的URL增加鉴权认证,您可以通过自行配置校验鉴权URL中的加密串和时间戳,保护用户站点的资源不被非法站点下载盗用。URL鉴权比Referer防盗链安全性更高,适合于安全密级较高的文件。
示例
1.应用服务器生成如下的URL
原始URL:http://aaa.example.com/video/test.flv
加鉴权后URL:http://cdn.com/video/test.flv?Signature=hmac(timestamp,md5(filePath),key)&Expires=xxxx
Expires为将来的某个时间
filePath : /video/test.flv
2.CDN查看传入的timestamp看是否是超过30min。
3.CDN按相同的hmac校验是否篡改。
要把key和可支持的过期时间在CDN提前配置好。
签名 Cookie 提供有限的权限和时间用于向一组文件发出请求。
下列情况下,可以使用签名 Cookie:
要是客户禁用cookie或不支持cookie的设备就拉了
配置和发布签名 Cookie 的过程分为三个步骤:
示例Cookie:
// 一体 Set-Cookie: Cloud-CDN-Cookie=URLPrefix=aHR0cHM6Ly9tZWRpYS5leGFtcGxlLmNvbS92aWRlb3Mv:Expires=1566268009:KeyName=mySigningKey:Signature=0W2xlMlQykL2TG59UZnnHzkxoaw=; Domain=media.example.com; Path=/; Expires=Tue, 20 Aug 2019 02:26:49 GMT; Secure; HttpOnly // 分开 Set-Cookie: CloudFront-Expires=date and time in Unix time format (in seconds) and Coordinated Universal Time (UTC); Domain=optional domain name; Path=/optional directory path; Secure; HttpOnly Set-Cookie: CloudFront-Signature=hashed and signed version of the policy statement; Domain=optional domain name; Path=/optional directory path; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=public key ID for the CloudFront public key whose corresponding private key you're using to generate the signature; Domain=optional domain name; Path=/optional directory path; Secure; HttpOnly
Cookie 中的
Domain
和Path
属性决定了客户端是否将 Cookie 发送到 Cloud CDN。
明确设置
Domain
和Path
属性,以匹配您希望从中传送受保护内容的网域和路径前缀,这可能与签发 Cookie 的网域和路径不同(分别是example.com
与media.example.com
,或者分别是/browse
与/videos
)。对于同一个
Domain
和Path
,请确保您只有一个具有指定名称的 Cookie。请确保您未签发有冲突的 Cookie,否则可能导致无法在其他浏览器会话(窗口或标签页)中访问内容。
在适用的情况下设置
Secure
和HttpOnly
标志。Secure
可确保仅通过 HTTPS 连接发送 Cookie。HttpOnly
会禁止 JavaScript 使用 Cookie。Cookie 特性
Expires
和Max-Age
是可选的。如果您省略这些特性,则 Cookie 会在浏览器会话(标签页或窗口)存在期间保持存在。注意:此处提及的
Expires
属性是出现在 Cookie 值之外的属性(如果有)。请勿将此属性与 Cookie 值中必需的Expires
参数混淆。Cookie 值中包含的Expires
参数指定 Cloud CDN 允许用户访问受保护内容的时间限制。此时间限制与 Cookie 的有效期无关。在缓存填充或缓存未命中时,签名 Cookie 会传递到后端服务中定义的源站。请确保首先验证每个请求的签名 Cookie 值,之后再传送内容。
Set-Cookie: =; Domain=; Secure; HttpOnly
/
全匹配远程鉴权和URL鉴权的作用一样,都用于保护资源,让资源只被授权成功的用户访问,非授权用户将无法访问。差异点在于URL鉴权是由CDN节点完成鉴权;远程鉴权是用户有自己单独的鉴权服务器,由用户自主管理。
可以通过配置访问请求来源的IP地址(即IP黑名单和白名单),来实现对访客身份的识别和过滤,限制访问CDN资源的用户,防止恶意IP盗刷、攻击等问题。
User-Agent是访问请求客户端的标识,当您想指定访问的客户端时,可以通过配置User-Agent黑名单和白名单来实现对访客身份的识别和过滤,保证用户只从您允许的客户端访问。
验证自己提供给CDN的授权URL,但是无法防止恶意用户直接访问你的回源服务。
在云厂商的请求中添加自定义key在请求参数或者Header中。
只允许云厂商的IP访问即可。
1.回源服务返回为的文件时加密的,携带个keypairId参数
2.登录的用户才返回给他这个keypairid对应的key用于解密
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。