diff --git a/docs/uniCloud/cdn-security-policy.md b/docs/uniCloud/cdn-security-policy.md index 0a6b6cd00f5442433d35fe54e0d38f5b54aebadf..b7c6f3ac8c59a76148d8ef658a377c9c03aa948e 100644 --- a/docs/uniCloud/cdn-security-policy.md +++ b/docs/uniCloud/cdn-security-policy.md @@ -4,9 +4,11 @@ ## 简介 -云存储及前端网页托管上传的文件在对外分发后,只需知道文件的http链接,公网上是可以随意访问的。这种情况很有可能会造成CDN流量被刷、有价值的图片视频被盗链,导致资源用量上升。 +云存储及前端网页托管上传的文件在对外分发后,只需知道文件的http链接,公网上是可以随意访问的。这可能会造成CDN流量被刷、有价值的图片视频被盗链,导致资金损失。 -针对这种情况,可通过安全策略提供的Referer防盗链、IP黑白名单、User-Agent黑白名单来实现对访客身份的识别和过滤,从而限制访问CDN资源的用户,提升CDN的安全性。 +为此,uniCloud提供了如下安全策略进行保护,包括:Referer防盗链、IP黑白名单、User-Agent黑白名单。 + +这些措施可实现对访客身份的识别和过滤,提升安全性。 ## 如何开通 @@ -14,7 +16,7 @@ 开通要求:前一日账号下所有服务空间产生的CDN流量大于1GB,CDN流量包含云存储及绑定自定义域名的前端网页托管。 -符合条件会实时开通,开通后可配置云存储及前端网页托管的访问控制规则及查看访问报表。访问报表有一天延迟,开通当天的报表会在第二天生成。 +符合条件会实时开通,开通后可配置云存储及前端网页托管的访问控制规则、查看访问报表。访问报表有一天延迟,开通当天的报表会在第二天生成。 **由于前端网页托管默认域名不走CDN,所以只有绑定了自定义域名才可配置前端网页托管的访问规则及查看报表。** @@ -23,11 +25,15 @@ Referer防盗链,是基于HTTP请求头中Referer字段来设置访问控制规则,实现对访客的身份识别和过滤,防止资源被非法盗用。 +常用于web和小程序的防盗链。 + 配置Referer黑白名单后,CDN会根据配置的规则识别请求身份,允许或拒绝访问请求。允许访问请求,CDN会返回资源链接;拒绝访问请求,CDN会返回403响应码。 ### 如何配置Referer防盗链 -访问控制Referer防盗链页签,点击修改配置来配置规则。您可根据业务需求,设置Referer黑名单或白名单。 +点击 Referer防盗链 页签,配置规则。您可根据业务需求,设置Referer黑名单或白名单。 + +例如,你的web网站地址为 abc.com,那么可以设定白名单为 abc.com,那么除了这个网站,其他来源请求都会被禁止访问cdn。 ![配置Referer防盗链](https://web-assets.dcloud.net.cn/unidoc/zh/cdn-safe-referer.png) @@ -56,46 +62,30 @@ Referer防盗链,是基于HTTP请求头中Referer字段来设置访问控制 |平台 |Referer | |:-: |:-: | |微信 | https://servicewechat.com | -|QQ | https://appservice.qq.com | -|头条抖音 | https://tmaservice.developer.toutiao.com | +|支付宝 | https://你的支付宝小程序appid.hybrid.alipay-eco.com | |百度 | https://smartapps.cn | -|支付宝 | https://你的appid.hybrid.alipay-eco.com | - -### App中Referer防盗链现状 - -App中请求资源时的referer为空,目前不支持指定。如果已设置黑/白名单则在App中无法访问资源。 - -如需支持App访问,需要开启高级配置中的`允许通过浏览器地址栏直接访问资源URL`,即允许空Referer访问CDN资源。此时空Referer及命中黑/白名单规则的请求可正常访问资源,不过CDN安全性会有一定降低。 - - -## IP黑/白名单@ip - -通过识别客户端IP来过滤用户请求,拦截特定IP的访问或者允许特定IP的访问,可以用来解决恶意IP盗刷、攻击等问题。 +|头条抖音 | https://tmaservice.developer.toutiao.com | +|QQ | https://appservice.qq.com | -### 如何配置IP黑/白名单 +注意:如果您启用了白名单,又没有填写上述网址,那么这些小程序将无法访问您的cdn。 -访问控制IP黑/白名单页签,点击修改配置来配置规则。 +其他小程序平台,请查阅它们的文档。 -![配置IP黑/白名单](https://web-assets.dcloud.net.cn/unidoc/zh/cdn-safe-ip.png) +### App中Referer防盗链 -|配置项 |参数 |说明 | -|:-: |:-: |:-: | -|名单类型 |黑名单 | 黑名单内的IP无法访问所有资源。 | -|名单类型 |白名单 | 只有白名单内的IP能访问资源,白名单以外的IP均无法访问。 | -|规则 |IP列表 | 多个使用回车符进行分隔。输入IP段(不可重复,例如:192.168.0.0/24)或IP地址(例如192.168.0.1)。支持IPv6地址、IPv4地址。 | +App中请求cdn时的referer为空。也不支持指定。如果已设置黑/白名单则在App中无法访问资源。 -**补充** +如需支持App访问,请务必开启高级配置中的`允许通过浏览器地址栏直接访问资源URL`,即**允许空Referer访问CDN资源**。 -- IPv4:最多可配置约2000个IPv4地址。 -- IPv6:最多可配置约700个IPv6地址,不支持::缩写格式,例如:不支持FC00:0AA3::0023:0003:0300:300A:1234。支持输入IP段,例如:FC00:0AA3:0000:0000:0000:0000:0000:0000/48。 -- IP地址字符串的总长度不能超过30 KB。 +此时空Referer及命中黑/白名单规则的请求可正常访问资源。 +在App中,如需指定某App才能访问cdn,不是通过referer,而是通过userAgent,具体见下一节。 ## UA黑/白名单@ua User-Agent是HTTP请求头的一部分,包含用户访问时所使用的操作系统及版本、浏览器类型及版本等标识信息。 -配置UA黑/白名单后,用户请求资源时,CDN将获取用户请求时HTTP请求头中的User-Agent字段,同配置中的黑/白名单进行匹配来实现对访客身份的识别和过滤,保证用户只从您允许的客户端访问。 +配置UA黑/白名单后,用户请求资源时,CDN将获取用户请求时HTTP请求头中的User-Agent字段,同配置中的黑/白名单进行匹配来实现对访客身份的识别和过滤,保证只从您允许的客户端UA才能访问cdn。 ### 如何配置UA黑/白名单 @@ -110,6 +100,10 @@ User-Agent是HTTP请求头的一部分,包含用户访问时所使用的操作 | |白名单 | 只有HTTP请求头中的User-Agent字段命中白名单的情况下,用户才能正常访问资源。 | | 规则 | UA列表 | 用竖线 “|” 分割多个值,支持 \* 星号通配符。例如:\*curl\*|\*IE\*|\*chrome\*|\*firefox\*。 | +uni-app的app端,有默认UA,也可以自定义UA。 + +如需指定某个特殊UA才能访问cdn,需在manifest.json中配置。详见[App的默认UA和自定义UA教程](/tutorial/app-useragent.md) + **补充** - 如果您需要对用户请求中携带了User-Agent请求头,但是值为空的情况做访问控制,您可以在规则中填写this-is-empty-ua来表示User-Agent值为空。 @@ -121,6 +115,31 @@ User-Agent是HTTP请求头的一部分,包含用户访问时所使用的操作 - 前端网页托管需绑定自定义域名后才可配置访问规则及查看报表。 + +## IP黑/白名单@ip + +通过识别客户端IP来过滤用户请求,拦截特定IP的访问或者仅允许特定IP的访问,可以用来解决恶意IP盗刷、攻击等问题。 + +### 如何配置IP黑/白名单 + +访问控制IP黑/白名单页签,点击修改配置来配置规则。 + +![配置IP黑/白名单](https://web-assets.dcloud.net.cn/unidoc/zh/cdn-safe-ip.png) + +|配置项 |参数 |说明 | +|:-: |:-: |:-: | +|名单类型 |黑名单 | 黑名单内的IP无法访问所有资源。 | +|名单类型 |白名单 | 只有白名单内的IP能访问资源,白名单以外的IP均无法访问。 | +|规则 |IP列表 | 多个使用回车符进行分隔。输入IP段(不可重复,例如:192.168.0.0/24)或IP地址(例如192.168.0.1)。支持IPv6地址、IPv4地址。 | + +**补充** + +- IPv4:最多可配置约2000个IPv4地址。 +- IPv6:最多可配置约700个IPv6地址,不支持::缩写格式,例如:不支持FC00:0AA3::0023:0003:0300:300A:1234。支持输入IP段,例如:FC00:0AA3:0000:0000:0000:0000:0000:0000/48。 +- IP地址字符串的总长度不能超过30 KB。 + + + ## 查看报表@report 通过访问报表功能,您可以查询云存储及前端网页托管的访问统计数据;通过分析数据,便于了解业务运行状况。 @@ -132,3 +151,18 @@ User-Agent是HTTP请求头的一部分,包含用户访问时所使用的操作 |访问最多的Referer | 按流量倒序展示访问Referer流量、流量占比、访问次数和访问占比,最多100条记录 | |访问最多的URL | 按流量倒序展示URL的流量、流量占比、访问次数和访问占比,最多100条记录 | |访问最多的IP | 按流量倒序展示访问IP流量和访问次数,最多100条 | + +## 总结 + +- 如果不做App,那么配置referer白名单就可以。 +- 如果做App,那么referer必须允许为空,同时在ua里设置您的app的特殊ua。 + +**注意:** + +因为http头其实是可以伪造的,所以使用referer和ua没有那么绝对的安全。 + +ip虽然是不可伪造的,但面对海量用户无法配置ip白名单。 + +一般在配置referer和ua后,需继续通过查看报表,发现可疑的ip并禁封。 + +这是行业现状,也是业内cdn通行的安全防护措施。uniCloud已将阿里云cdn的所有安全策略均透传出来。