我正在构建API,我计划使用API密钥,url请求将被调用如下:
但是在这种情况下,使用WebCrawler,人们可以看到api键,所以我想知道如何使它安全吗?
答案 0 :(得分:1)
在构建需要身份验证的API时,您通常会为每个用户分配一个唯一的密钥,我将由他来了解如何使用它。通常最好的方法是只通过服务器调用来调用您的API(例如,使用C#客户端连接到您的API,而不是通过javascript进行,页面上的任何人都可以读取密钥),这样他们和#39; ll避免像在javascript代码中存储API密钥那样的东西,但是如果他们想要通过直接的javascript调用来做这件事,那么它将取决于他们。尽管如此,正如Murali建议的那样,我认为标题会比URL参数好很多,至少通过这样做,对于任何查看网址的人来说,密钥都不会完全可见。
如果你还担心中间的人,你也应该强制你的API只能通过HTTPS访问,这样所有的通信都会被加密,并且没有办法中间人知道API密钥(假设加密部分配置正确)。
现在,如果您想以更优雅的方式使用临时密钥,您可以随时查看OAuth2。简而言之,它允许您配置身份验证服务器,您可以在其中为API使用者提供秘密标识符,以便为您的API创建临时密钥,因此即使您的某个API密钥遭到入侵,它也会被破坏。这不是一个大问题,因为这些密钥会在几个小时后更新(可能会更多或更少,具体取决于您的配置。另外,请记住,您的消费者需要保护他们的OAuth凭据,因为这些凭据将允许他们请求新密钥)。