字节实习记录
文章目录
前言
一、上线的一些小tips
二、CDN 安全合规改造
• 背景:图床问题
黑产人员:找到上传接口 -> 上传恶意资源 -> 获取我司资源地址 -> 发布到恶意网站
黑产网站用户:访问恶意网站 -> 我司资源地址 -> 回源到我司存储
• 现状:上传接口被抓取,会被利用上传黑产自己的资源,被当作图床使用;被使用hls技术上传伪造为图片的视频小文件(后续页面还原)。
2.1 边缘鉴权
a. url?uid=XXX&definition=XXX
b. 资源地址中包含一段鉴权字符串,一般通过MD5或AK/SK加密,边缘节点可以直接检验,只有合法生成的鉴权串,才能通过校验,且地址一般包含有效时间,只有在设定的有效期内可播放
c. 鉴权
d. 链接形如 https://image-tt-private.toutiao.com/pgc-image/007db27127854ae986955e5c1fa6ec72~tplv-obj.image?policy=eyJ2bSI6MywidWlkIjoiNTAwNDM2MzY5MCJ9&traceid=20210429023359192168000105017AE96&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=2147483647&x-orig-sign=giu1bNfyMT5lR8mva7wiJJ%2BqkGM%3D
e. 鉴别A是否有访问B的权限。显然,当一个请求过来时需要同时做下面2件事
f. A的身份
g. 判断A是否有访问B的权限
h. 上传图片到视频架构的隐私bucket中,并将图片的object key通过图片服务的签名SDK对图片链接进行签名,是链接仅对允许授权的用户访问
2.2 回源鉴权
通过cookie中的uid,进行sessionid的校验。同样签名的时候需要将uid加入签名串。这里要求服务端的登录接入公司的passport
○ 用户请求到CDN节点
○ CDN节点将用户强求原封不动的转发给鉴权服务器
○ 鉴权服务器根据请求头中的鉴权参数等给出鉴权结果
○ CDN节点根据鉴权结果将内容响应给最终用户
三、curl
curl是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。
四、es6的可选链
可选链操作符( ?. )允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。假如说要获取name的val值而不报错,那么传统的方法如下:
即: let name = adventurer && adventurer.cat && adventurer.cat.name
次方法过于繁琐,于是就有了可选链的方法,即便没有搜选到存在的值,也只会报错undefined。
const adventurer = {
name: 'Alice',
cat: {
name: 'Dinah'
}
};
const dogName = adventurer.cat?.name;
console.log(dogName);//Dinah
会在尝试访问 obj.first.second 之前,先隐式地检查并确定 obj.first 既不是 null 也不是 undefined。如果obj.first 是 null 或者 undefined,表达式将会短路计算直接返回 undefined。
let temp = obj.first;
let nestedProp = ((temp === null || temp === undefined)