API RESTful API 中的密钥加密?
API key encryption in RESTful API?
我正在构建一个 API,我打算使用 API 密钥,url 请求将这样调用:
但是在这种情况下,使用WebCrawler,人们可以看到api密钥,所以我想知道如何让它安全?
在构建需要身份验证的 API 时,您通常会为每个用户分配一个唯一的密钥,我将由他决定如何使用它。通常最好的方法是仅通过服务器调用来调用您的 API(例如,使用 C# 客户端连接到您的 API,而不是通过页面上任何人的 javascript将能够读取密钥),这样他们就可以避免做诸如将 API 密钥存储在 javascript 代码中之类的事情,但是同样,如果他们想这样做,这将取决于他们它直接 javascript 电话。尽管如此,正如 Murali 所建议的那样,我认为 header 会比 URL 参数好很多,至少通过这样做,任何人都不会完全看到密钥url.
如果你也担心中间人,你也应该强制你的 API 只能通过 HTTPS 访问,这样所有的通信都将被加密并且没有办法中间人知道 API 密钥(假设加密部分配置正确)。
现在,如果您想以更优雅的方式使用临时键,您可以随时查看 OAuth2。长话短说,它允许您配置一个身份验证服务器,您可以在其中为您的 API 消费者提供一个秘密标识符来为您的 API 创建临时密钥,因此即使您的 API 密钥被泄露,这不会是一个大问题,因为这些密钥将在几个小时后更新(可能或多或少,具体取决于您的配置。另外,请记住,您的消费者需要保护他们的 OAuth 凭据,因为这些凭据将允许他们请求新密钥)。
我正在构建一个 API,我打算使用 API 密钥,url 请求将这样调用:
但是在这种情况下,使用WebCrawler,人们可以看到api密钥,所以我想知道如何让它安全?
在构建需要身份验证的 API 时,您通常会为每个用户分配一个唯一的密钥,我将由他决定如何使用它。通常最好的方法是仅通过服务器调用来调用您的 API(例如,使用 C# 客户端连接到您的 API,而不是通过页面上任何人的 javascript将能够读取密钥),这样他们就可以避免做诸如将 API 密钥存储在 javascript 代码中之类的事情,但是同样,如果他们想这样做,这将取决于他们它直接 javascript 电话。尽管如此,正如 Murali 所建议的那样,我认为 header 会比 URL 参数好很多,至少通过这样做,任何人都不会完全看到密钥url.
如果你也担心中间人,你也应该强制你的 API 只能通过 HTTPS 访问,这样所有的通信都将被加密并且没有办法中间人知道 API 密钥(假设加密部分配置正确)。
现在,如果您想以更优雅的方式使用临时键,您可以随时查看 OAuth2。长话短说,它允许您配置一个身份验证服务器,您可以在其中为您的 API 消费者提供一个秘密标识符来为您的 API 创建临时密钥,因此即使您的 API 密钥被泄露,这不会是一个大问题,因为这些密钥将在几个小时后更新(可能或多或少,具体取决于您的配置。另外,请记住,您的消费者需要保护他们的 OAuth 凭据,因为这些凭据将允许他们请求新密钥)。