代码之家  ›  专栏  ›  技术社区  ›  Tim

我需要API安全基础的资源。有什么建议吗?

  •  0
  • Tim  · 技术社区  · 14 年前

    我做了一点谷歌搜索,但有点不知所措的信息量。到目前为止,我一直在考虑为每个API调用请求一个有效的md5散列,但我意识到劫持这样一个系统并不是一项困难的任务。你们能不能给我提供一些可以帮助我搜索的链接?谢谢。

    2 回复  |  直到 10 年前
        2
  •  1
  •   georgeawg    13 年前

    我想补充一些澄清问题的信息。“useauth”的答案是正确的,但是也被加载了(因为规范很长,不熟悉它的人通常希望看到它后自杀)。

    这基本上就是所谓的“双腿OAuth”;因为OAuth最初是用来验证客户机应用程序的,所以流程由3部分组成,包括身份验证服务、盯着屏幕的用户和想要使用客户机凭据的服务。

    两条腿的OAuth(我在那篇文章中详细介绍了这一点)用于服务API在彼此之间进行身份验证。例如,这是amazonweb服务用于所有API调用的方法。

    在HTTP上有任何请求时,你必须考虑攻击向量,其中中间的一些恶意人正在记录和重放或更改请求。

    例如,您向/user/create发出一个名为“bob”的POST,那么中间的人可以向/user/delete发出一个名为“bob”的POST,这只是为了让人讨厌。

    客户机和服务器需要某种方式来相互信任,唯一的方式是通过公钥/私钥。

    您不能只是来回传递公钥/私钥,也不能简单地提供用私钥签名的唯一令牌(这是 典型的 大多数人所做的和认为安全的事情),虽然这将识别来自真实客户机的原始请求,但仍会保留评论的参数以供更改。

    例如,如果我发送:

    其中密钥是我的公钥,由我的私钥签名,只有中间的人才能截获此调用,并以“amt”值“10000.00”将其重新提交到服务器。

    提醒:只有客户端和服务器知道私钥。

    这种类型的验证称为“HMAC”;它是验证请求内容的校验和。

    因为哈希生成非常敏感,必须完成 确切地

    例如,当您尝试使用SHA-1对这两行进行签名时,这两行提供了非常不同的哈希: /计费C&用户=bob&金额=100 /计费C&金额=100&用户=鲍勃

    OAuth规范中的很多内容都在描述这一点 准确的

    你也不能走捷径,只是把所有的东西连接成一个巨大的字符串,亚马逊尝试了AWS签名版本1和它 turned out wrong .

    我希望所有这些都能帮到你,如果你被困了,请随时提问。