3.2. 安全策略

未匹配的标注

Github: github.com/bigfile/bigfile

本节概要

为了增强 Bigfile 的安全性,我们提供几种安全方案:

  • 参数签名
  • 限速访问
  • 防止请求重放

参数签名

Bigfile 中,参数签名有两种方式,使用 APP 密钥签名以及使用 Token 密钥签名(如果 Token 没有密钥,就无需签名)。但是您不要怕,签名规则都是一样的,而且很简单。其中使用 APP 签名的 API 是为了操作 Token,使用 Token 签名的 API 是为了操作文件或者目录。规则总结为以下这 6 个步骤:

  1. 将参数按照字典顺序排序(各个语言中都有相应的排序函数);
  2. key=value 形式组织;
  3. & 符号连接;
  4. 拼接密钥(APP 密钥或者 Token 密钥)
  5. 将整个字符串运用 MD5 算法获得摘要即为参数的签名;
  6. 将上一步得到签名放置到 API 参数 sign 中;

我们来给个例子说明情况,如果我的密钥是:46afc3607a93ac410357a8ed53a872b8,我有这三个参数:name=bigfileage=25gender=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

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
Michael001
讨论数量: 0
发起讨论 查看所有版本


暂无话题~