【问题标题】:Protecting my REST service, which I will use on the client side with APIkey保护我的 REST 服务,我将在客户端使用 APIkey
【发布时间】:2011-12-28 15:28:20
【问题描述】:

假设我已经顺利创建了我的 REST 服务并且我正在返回 json 结果。

我还为我的用户实现了 API 密钥,以便为我的服务进行通信。

然后 A 公司开始使用我的服务,我给了他们一个 API 密钥。

例如,假设我的服务网址如下:

https://api.myservice.com/data?apikey={key_comes_here}

主要问题是我将拥有自己的网站,该网站还需要调用我自己的相同 REST Web 服务。如果我在调用自己的 REST 服务时从我的网站传递 API 密钥,什么会阻止某人使用例如 Firebug,请查看我在我的网络应用程序中使用的 API 密钥并使用相同的 API 密钥?

【问题讨论】:

    标签: wcf api rest wcf-web-api api-key


    【解决方案1】:

    Google 使用的方法,例如。谷歌地图是将 API 链接到一个 URL。因此,您只能在请求密钥时指定的 URL 中的应用程序中使用提供的密钥。这在 Web 应用程序中特别有用,您可以在其中获取服务器上的引荐来源网址。

    【讨论】:

    • 这听起来很不错,但是如果我需要从移动设备公开访问我的网络服务怎么办?
    • @djna 引用者当然可以被欺骗,但是当您公开一个在网站上使用的公共 API 时,用户将通过他们的标准网络浏览器访问该 API。如果普通用户必须欺骗referer,则该网站将无法满足大多数用户的需求。如果用户可以直接访问 API,他们始终可以看到您的 API 密钥,即使该站点受到 HTTPS 保护。因此,如果您要隐藏密钥,我认为您应该从后端系统访问该服务。如果你想保护后端流量免受网络嗅探器的攻击,那么你可以使用 HTTPS。
    • 我并不是建议普通用户必须进行欺骗,而不是我们无法防止未经授权且可能是恶意的应用程序使用被盗的 API 密钥和欺骗引用 URL。这里的问题来自应用程序提供者和服务提供者之间的分离,服务提供者(Radenko)希望只接受来自授权应用提供者的请求。正如您所说,如果应用程序提供商有一个受控的服务器端代理主题,其身份验证/授权与其应用程序本身相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 2023-02-13
    • 2020-09-05
    • 2017-04-20
    • 2015-10-29
    相关资源
    最近更新 更多