OSS+CDN的资费和安全

文章目录

    • 花费
      • OSS
      • CDN
      • OSS + CDN
    • 安全
      • OSS
        • 防盗链
        • 跨域设置CORS
        • 数据加密
      • CDN
        • 防盗链
        • URL鉴权
        • Cookie鉴权
        • 远程鉴权
        • IP黑白名单
        • UA黑白名单
      • 回源服务
        • 自定义私有参数
        • IP黑白名单
        • 数据加密

花费

OSS

  • 存储费用 :0.12元/GB/月
  • 下行流量费用 :0.5元/GB
  • 请求费用 :0.01元/10000次

CDN

  • 下行流量费用:0.24元/GB(梯度计费,用的越多越便宜)
  • 静态HTTPS请求数:0.05元/万次

OSS + CDN

  • CDN流出流量:由CDN收取费用:0.24元/GB
  • CDN回源流出流量:由OSS收取费用:0.15元/GB
  • 请求费用:由OSS收取费用:0.01元/万次

安全

OSS

防盗链

防盗链通过设置Referer列表(包括白名单Referer和黑名单Referer)以及是否允许空Referer的方式,限制您Bucket内资源的访问来源,避免Bucket内的资源被其他人盗用。

开启防盗链后,OSS会根据请求Header中的Referer地址判断访问来源的方式,确定是否允许当前请求。具体流程如下图所示。

在这里插入图片描述

  1. 判断请求Referer是否为空。
    • 如果请求Referer为空,则查看是否允许空Referer。
      • 如果允许空Referer,则请求被允许。
      • 如果不允许空Referer,且白名单Referer列表为空,则请求被允许。
      • 如果不允许空Referer,且白名单Referer列表不为空,则请求被拒绝。
    • 如果请求Referer不为空,则执行步骤2。
  2. 判断黑名单Referer列表是否为空。
    • 如果黑名单Referer列表为空,且白名单Referer列表为空,则请求被允许。
    • 如果黑名单Referer列表为空,且白名单Referer列表不为空,则跳过步骤3,执行步骤4。
    • 如果黑名单Referer列表不为空,则执行步骤3。
  3. 遍历黑名单Referer列表。
    • 如果黑名单Referer列表存在匹配条目,则请求被拒绝。
    • 如果黑名单Referer列表不存在匹配条目,则执行步骤4。
  4. 遍历白名单Referer列表。
    • 如果白名单Referer列表存在匹配条目,则请求被允许。
    • 如果白名单Referer列表不存在匹配条目,则请求被拒绝。
跨域设置CORS

同源检测 跨域访问是浏览器出于安全考虑而设置的一个限制,即同源策略,是用于隔离潜在恶意文件的关键安全机制。当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域名不同

从上表中可以看出,协议、域名或者端口不同的情况下,浏览器会拒绝该来源的访问。如果要允许这些来源的访问,需要设置跨域规则。

数据加密

CDN

防盗链

配置访问请求来源的域名(即Referer黑名单和白名单),实现对访客身份的识别和过滤,限制访问CDN资源的用户,禁止其他网站引用您的资源链接。

URL鉴权

URL鉴权是指用户按照指定的签名方式对于特定的URL增加鉴权认证,您可以通过自行配置校验鉴权URL中的加密串和时间戳,保护用户站点的资源不被非法站点下载盗用。URL鉴权比Referer防盗链安全性更高,适合于安全密级较高的文件。

  • 源站应用服务器:根据鉴权URL生成规则(包括鉴权算法、密钥)生成鉴权URL返回给客户端。
  • 客户端:发起资源请求,并发送鉴权URL给CDN节点进行验证。
  • CDN节点:对鉴权URL中的鉴权信息(鉴权字符串、时间戳等)进行验证。

示例

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 的过程分为三个步骤

  • 源站应用服务器:给指定Domain生成鉴权Cookie返回给客户端。
    • Cookie 值: 网址前缀、过期时间、键名称和加密签名
  • 客户端:发起资源请求,并发送URL给CDN节点进行验证。
  • CDN节点:对鉴权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 中的 DomainPath 属性决定了客户端是否将 Cookie 发送到 Cloud CDN。

  • 明确设置 DomainPath 属性,以匹配您希望从中传送受保护内容的网域和路径前缀,这可能与签发 Cookie 的网域和路径不同(分别是 example.commedia.example.com,或者分别是 /browse/videos)。

  • 对于同一个 DomainPath,请确保您只有一个具有指定名称的 Cookie。

  • 请确保您未签发有冲突的 Cookie,否则可能导致无法在其他浏览器会话(窗口或标签页)中访问内容。

  • 在适用的情况下设置 SecureHttpOnly 标志。 Secure 可确保仅通过 HTTPS 连接发送 Cookie。HttpOnly 会禁止 JavaScript 使用 Cookie。

  • Cookie 特性 ExpiresMax-Age 是可选的。如果您省略这些特性,则 Cookie 会在浏览器会话(标签页或窗口)存在期间保持存在。

    注意:此处提及的 Expires 属性是出现在 Cookie 值之外的属性(如果有)。请勿将此属性与 Cookie 值中必需的 Expires 参数混淆。Cookie 值中包含的 Expires 参数指定 Cloud CDN 允许用户访问受保护内容的时间限制。此时间限制与 Cookie 的有效期无关。

  • 在缓存填充或缓存未命中时,签名 Cookie 会传递到后端服务中定义的源站。请确保首先验证每个请求的签名 Cookie 值,之后再传送内容。

Set-Cookie: =; Domain=; Secure; HttpOnly

  • Expires 设置 cookie 的过期时间(时间戳),这个时间是客户端时间
  • Max-Age 设置 cookie 的保留时长(秒数),同时存在 Expires 和 Max-Age 的话,Max-Age 优先
  • Domain 设置生效的域名,默认就是当前域名,不包含子域名
  • Path 设置生效路径,/ 全匹配
  • Secure 设置 cookie 只在 https 下发送,防止中间人攻击
  • HttpOnly 设置禁止 JavaScript 访问 cookie,防止XSS
  • SameSite 设置跨域时不携带 cookie,防止CSRF
远程鉴权

远程鉴权和URL鉴权的作用一样,都用于保护资源,让资源只被授权成功的用户访问,非授权用户将无法访问。差异点在于URL鉴权是由CDN节点完成鉴权;远程鉴权是用户有自己单独的鉴权服务器,由用户自主管理。

IP黑白名单

可以通过配置访问请求来源的IP地址(即IP黑名单和白名单),来实现对访客身份的识别和过滤,限制访问CDN资源的用户,防止恶意IP盗刷、攻击等问题。

UA黑白名单

User-Agent是访问请求客户端的标识,当您想指定访问的客户端时,可以通过配置User-Agent黑名单和白名单来实现对访客身份的识别和过滤,保证用户只从您允许的客户端访问。

回源服务

验证自己提供给CDN的授权URL,但是无法防止恶意用户直接访问你的回源服务。

自定义私有参数

在云厂商的请求中添加自定义key在请求参数或者Header中。

IP黑白名单

只允许云厂商的IP访问即可。

数据加密

1.回源服务返回为的文件时加密的,携带个keypairId参数

2.登录的用户才返回给他这个keypairid对应的key用于解密

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

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

相关文章

2023金盾杯线上赛-AGRT战队-WP

目录 WEB ApeCoin get_source ezupload easyphp MISC 来都来了 芙宁娜 Honor Crypto 我看看谁还不会RSA hakiehs babyrsa PWN sign-format RE Re1 WEB ApeCoin 扫描发现有源码泄露,访问www.tar.gz得到源码。 在源码中发现了冰蝎马。 Md5解码&am…

持续集成部署-k8s-配置与存储-存储类:动态创建NFS-PV案例

动态创建NFS-PV案例 1. 前置条件2. StorageClass 存储类的概念和使用3. RBAC 配置4. storageClass 配置5. 创建应用,测试 PVC 的自动配置6. 解决 PVC 为 Pending 状态问题7. 单独测试自动创建 PVC 1. 前置条件 这里使用 NFS 存储的方式,来演示动态创建 …

springboot打印启动信息

打印启动信息 转载自:www.javaman.cn 1 spring Bean实例化流程 基本流程: 1、Spring容器在进行初始化时,会将xml或者annotation配置的bean的信息封装成一个BeanDefinition对象(每一个bean标签或者bean注解都封装成一个BeanDefinition对象&a…

传输层协议[精选]

网络: 跨主机通信. 互联网通信: 两点之间的通信路径有无数条. 集线器: 把一根网线差出来两根,但是同一时刻只能有一根线跑.交换机: 组建局域网.路由器: 本质就是将两个局域网连接起来 交换机和路由器之间的区别越来越模糊. 调制解调器: 使用电话线上网的时候,需要将电话线的模…

推动卓越创新:了解 4 种研发团队架构如何优化您的组织

揭示敏捷实践中常犯的12大错误,了解如何避免这些敏捷失败 陷阱,找出问题根源并采取有效改进措施,提高项目成功率。立即连线 Runwise.co 社区敏捷专家获得专业建议,或 Runwise.co 在线学习敏捷方法实战课程,提升您和团队…

Node——Node.js基础

Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,它能够让JavaScript脚本运行在服务端,这使得JavaScript成为与PHP、Python等服务端语言平起平坐的脚本语言。 1、认识Node.js Node.js是当今网站开发中非常流行的一种技术,它以简单易…

【go入门】表单

4.1 处理表单的输入 先来看一个表单递交的例子&#xff0c;我们有如下的表单内容&#xff0c;命名成文件login.gtpl(放入当前新建项目的目录里面) <html> <head> <title></title> </head> <body> <form action"/login" meth…

11-25碎片小知识

一.strlen补充 strlen函数返回值是size_t&#xff0c;即无符号整型&#xff0c; size_t有头文件&#xff0c;是stdio.h 由于strlen函数返回值是无符号整型&#xff0c;所以下面代码要注意 -3会被转换成无符号的 实现my_strlen 法一&#xff1a;指针减指针 #define _CRT_S…

uniapp IOS从打包到上架流程(详细简单)

​ uniapp IOS从打包到上架流程&#xff08;详细简单&#xff09; 原创 1.登入苹果开发者网站&#xff0c;打开App Store Connect ​ 2.新App的创建 点击我的App可以进入App管理界面&#xff0c;在右上角点击➕新建App 即可创建新的App&#xff0c;如下图&#xff1a; ​ 3.…

MetaObject-BeanWrapper-MetaClass-Reflector的关系

MetaObject、BeanWrapper、MetaClass、Reflector之间是通过装饰器模式逐层进行装饰的。其中MetaObject、BeanWrapper是操作对象&#xff1b;MetaClass、Reflector是操作Class ObjectWrapper类结构图 BaseWrapper是对BeanWrapper、MapWrapper公共方法的提取及类图的优化&#…

057-第三代软件开发-文件监视器

第三代软件开发-文件监视器 文章目录 第三代软件开发-文件监视器项目介绍文件监视器实现原理关于 QFileSystemWatcher实现代码 关键字&#xff1a; Qt、 Qml、 关键字3、 关键字4、 关键字5 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&…

京东秒杀之商品列表

1 在gitee上添加.yml文件 1.1 添加good-server.yml文件 server:port: 8084 spring:datasource:url: jdbc:mysql://localhost:3306/shop_goods?serverTimezoneGMT%2B8driverClassName: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourceusername: rootpa…

i社为什么不出游戏了?

I社&#xff0c;即国际知名的游戏公司&#xff0c;近来为何鲜有新游问世&#xff1f;曾经风靡一时的游戏开发者&#xff0c;如今为何陷入了沉寂&#xff1f;这其中的种种原因&#xff0c;值得我们深入剖析。 首先&#xff0c;I社近期的沉寂可能与其内部管理层的调整和战略规划…

Vue简单的表单操作

效果预览图 完整代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>作业</title><styl…

window环境搭建StarRocksFE节点

StarRocks部署–源码编译 前言 ​ 注意:本文借用了一些其他文章的一些截图&#xff0c;同时自己做了具体的编译步骤&#xff0c;添加了一些新的内容 ​ 目标&#xff1a; 编译StarRocks2.5.13版本FE节点代码&#xff0c;在本地window环境运行&#xff0c;可以访问到8030界面…

C++类与对象(5)—流运算符重载、const、取地址

目录 一、流输出 1、实现单个输出 2、实现连续输出 二、流输入 总结&#xff1a; 三、const修饰 四、取地址 .取地址及const取地址操作符重载 五、[ ]运算符重载 一、流输出 1、实现单个输出 创建一个日期类。 class Date { public:Date(int year 1, int month 1,…

Linux篇:文件管理

一、共识原理&#xff1a; 1. 文件内容属性&#xff0c;内容与属性都是数据&#xff0c;都要在磁盘中保存。 2. 文件分为打开的文件和没打开的文件。 3. 研究打开的文件&#xff1a;本质是研究进程和文件的关系&#xff0c;因为是进程负责打开文件。 4. 没打开的文件在存储介质…

Idea常用的快捷键

快捷键 快速生成main()方法&#xff1a;psvm&#xff0c;回车 快速生成输出语句&#xff1a;sout&#xff0c;回车 ctrlz撤回&#xff0c;ctrlshiftz取消撤回 ctrlr替换 CtrlAltspace(内容提示&#xff0c;代码补全等) ctrl句号。最小化方法&#xff0c;恢复最小化方法。 …

LV.12 D20 RTC实验 学习笔记

一、RTC简介 RTC(Real Time Clock)即实时时钟&#xff0c;它是一个可以为系统提供精确的时间基准的元器件&#xff0c;RTC一般采用精度较高的晶振作为时钟源&#xff0c;有些RTC为了在主电源掉电时还可以工作&#xff0c;需要外加电池供电 二、Exynos4412下的 RTC控制器 它支持…

前端向后端传JSON数据,使用MyBatis查询

form中向后端传的是空字符串&#xff0c;并不是null 而在MyBatis的判断中应判断是否为空字符串&#xff0c;而并非null