RESTful API 中的 API 密钥加密?
Posted
技术标签:
【中文标题】RESTful API 中的 API 密钥加密?【英文标题】:API key encryption in RESTful API? 【发布时间】:2017-10-17 07:33:39 【问题描述】:我正在构建一个API,我打算使用API key,url请求会这样调用:
http://myapi.com/apikey=mykey
但是在这种情况下,使用 WebCrawler,人们可以看到 api 密钥,所以我想知道如何使它安全?
【问题讨论】:
您应该考虑作为标头发送。 但是你还是可以看到标题的吧? Here 是对此的回答。 【参考方案1】:在构建需要身份验证的 API 时,您通常会为每个用户分配一个唯一的密钥,而我将让他知道如何使用它。通常最好的方法是只通过服务器调用来调用你的 API(例如,使用 C# 客户端连接到你的 API,而不是通过页面上的任何人都可以读取密钥的 javascript 来进行),这样他们' 将避免做诸如在 javascript 代码中存储 API 密钥之类的事情,但同样,如果他们想通过直接的 javascript 调用来做到这一点,这将取决于他们。尽管如此,正如 Murali 所建议的那样,我认为标头会比 URL 参数好得多,至少通过这样做,查看 url 的任何人都不会完全看到密钥。
如果您还担心中间人,您还应该强制您的 API 只能通过 HTTPS 访问,这样所有通信都将被加密,中间人将无法使用知道 API 密钥(假设加密部分配置正确)。
现在,如果您想以更优雅的方式使用临时键,您可以随时查看OAuth2。长话短说,它允许您配置一个身份验证服务器,您将在其中为您的 API 使用者提供一个秘密标识符,以便为您的 API 创建临时密钥,因此即使您的一个 API 密钥被泄露,它也不会是一个大问题问题,因为这些密钥将在几个小时后更新(可能或多或少,具体取决于您的配置。另外,请记住,您的消费者将需要保护他们的 OAuth 凭据,因为这些凭据将允许他们请求新密钥)。
【讨论】:
以上是关于RESTful API 中的 API 密钥加密?的主要内容,如果未能解决你的问题,请参考以下文章