3.2. 安全策略
Github: github.com/bigfile/bigfile
本节概要
为了增强 Bigfile
的安全性,我们提供几种安全方案:
- 参数签名
- 限速访问
- 防止请求重放
参数签名
在 Bigfile
中,参数签名有两种方式,使用 APP
密钥签名以及使用 Token
密钥签名(如果 Token
没有密钥,就无需签名)。但是您不要怕,签名规则都是一样的,而且很简单。其中使用 APP
签名的 API 是为了操作 Token
,使用 Token
签名的 API
是为了操作文件或者目录。规则总结为以下这 6 个步骤:
- 将参数按照字典顺序排序(各个语言中都有相应的排序函数);
- 以
key=value
形式组织; - 以
&
符号连接; - 拼接密钥(
APP
密钥或者Token
密钥) - 将整个字符串运用 MD5 算法获得摘要即为参数的签名;
- 将上一步得到签名放置到 API 参数
sign
中;
我们来给个例子说明情况,如果我的密钥是:46afc3607a93ac410357a8ed53a872b8
,我有这三个参数:name=bigfile
,age=25
和 gender=body
。
前 4 个步骤之后将得到:
age=25&gender=body&name=bigfile46afc3607a93ac410357a8ed53a872b8
对上面的字符串运用 MD5 算法之后,假设结果为:f8f2ae1fe4f70b788254dcc991a35558
那么你所有要提交的参数将是:
age=25&gender=body&name=bigfile&sign=f8f2ae1fe4f70b788254dcc991a35558
限速访问
我们在 HTTP API 服务中提供了限速访问,防止过渡滥用 API
,但是我们默认关闭了它,相信世界是美好的。如果你想打开它,只需要提供一个包含下面内容的配置文件:
http:
limitRateByIPEnable: true
limitRateByIPInterval: 1000
limitRateByIPMaxNum: 100
上面的配置文件意思是,每 1000 ms
每个 IP
最多 100
请求,您可以根据实际情况适当调整。
防止重放攻击
在请求中,如果你添加了 nonce
参数,那么就会触发我们的防重放验证,如果相同 nonce
的请求到来,我们拒绝继续操作,并返回一个 400
错误,类似这样:
{
"requestId": 100001,
"success": false,
"errors": {
"nonce": ["this request is being replayed"]
},
}
英文文档:bigfile.site