您的位置:首页 > 其它

关于防盗链与跨域访问

2016-12-30 09:53 316 查看

关于防盗链与跨域访问

最近用阿里云的时候发现一些防盗链与跨域访问的一些坑,填完坑之后稍微整理一下。

防盗链

防盗链是利用浏览器Http请求头
Referer
,告诉服务器谁访问资源,由服务器作判断,如果符合一定规则则返回数据,否则返回403。

Flash player跨域访问

Flash player访问指定资源之前,访问根URL下的
crossdomain.xml
,例如访问资源
http://test.com/path/to/a.m3u8
之前会访问
http://test.com/crossdomain.xml
,由Flash player解析并判断是否可以进行跨域访问。

crossdomain.xml
的范例

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only"/>
<allow-access-from domain="*.yy.com"/>
<allow-access-from domain="*.yypm.com"/>
<allow-access-from domain="*"/>
<allow-http-request-headers-from domain="*.yy.com" headers="SOAPAction"/>
</cross-domain-policy>


浏览器跨域访问

具体参照http://www.ruanyifeng.com/blog/2016/04/cors.html

Flash player与OSS的跨域访问

如果需要Flash player跨域访问OSS里面的视频资源,需要设置:

1. 编写crossdomain.xml,放在bucket的根目录下

2. 将域名添加到防盗链配置中(如果防盗链配置为空,则忽略)

3. 将域名规则添加到跨域(Cors)配置规则中(如果规则列表为空,则忽略)

OSS与CDN的防盗链

OSS和CDN的防盗链配置是分离的。配置可以分为下面几种情况:

1. 只配置OSS

安全性一般,可能会通过CDN的域名扫描到资源,而且会因CDN的缓存配置导致有时候200有时候403的情况。

2. 只配置CDN

安全性一般,可能会通过OSS的域名扫描到资源。

3. OSS和CDN都配置但不保持一致

很容易混乱,出问题很难查,
不建议


4. OSS和CDN都配置并且保持一致

这是最安全的做法,但保持一致
成本较高


总的来说,1和2的安全性是一致的,所以如果安全性不高选择2,安全性高则选择4。

OSS与CDN的跨域配置

OSS和CDN的跨域配置是分离的。配置可以分为下面几种情况:

1. 只配置OSS

安全性一般,可能会通过CDN的域名扫描到资源,而且这样做会因CDN的缓存配置导致有时候200有时候403的情况。

2. 只配置CDN

安全性一般,可能会通过OSS的域名扫描到资源。

3. OSS和CDN都配置但不保持一致

很容易混乱,出问题很难查,
不建议


4. OSS和CDN都配置并且保持一致

这是最安全的做法,但保持一致
成本较高


总的来说,1和2的安全性是一致的,所以如果安全性不高选择2,安全性高则选择4。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息