【问题标题】:Security about a simple REST web service关于简单 REST Web 服务的安全性
【发布时间】:2015-11-26 18:23:52
【问题描述】:

这是我的带有两个 URL 的小 API:

  • /api/location/list -> GET
  • /api/location/detail -> GET

我正在寻找一种通过身份验证来保护此服务的流程。目前,它只能由一个用户(我)访问。

我认为 oAuth 对我来说太复杂了,我发现这个资源用于设计 a simple API。 我了解私钥/公钥和 HMAC 的原理,但我对此非常担心:

假设我的网络服务被一个带有 GET 动词的 ajax 请求所消耗。我有类似/api/location/list?apikkey=userid&hash=abcde 的东西。 最终用户可以在请求期间轻松嗅探网络(通过简单的 chrome 控制台),捕获完整 url 并多次直接访问服务(我认为这是重放攻击的情况)。

不同的资源谈论时间戳或随机数以使请求唯一,但我对实现有点迷茫。

有什么想法吗?

【问题讨论】:

  • 你使用什么技术?
  • PHP 和 Symfony 2 框架

标签: web-services api rest security


【解决方案1】:

您可以尝试 JWToken 身份验证规范,比 Oauth 更简单,但如果可能,请避免将授权数据作为 url 参数,而是使用 Header 的请求。 如果需要,还可以考虑 tcp 级别的 ssl 加密。

【讨论】:

    【解决方案2】:

    也许您可以尝试使用基于令牌的安全方法,如本博文所述:

    这个想法是对一个身份验证资源(可以是您的应用程序的一部分)进行身份验证,以获取可以在过期时使用刷新令牌进行刷新的临时令牌。

    用HTTPS,好像比较合适。

    我认为这取决于您期望的安全级别。基于签名的身份验证(AWS 方法)很棒,但手动实现有点复杂。

    希望对你有帮助 蒂埃里

    【讨论】:

    • 谢谢它的帮助。实际上,我用 curl 调用 Google place api。我认为我不需要身份验证,因为我可以通过 Google 端的 ip 保护。
    猜你喜欢
    • 2013-04-28
    • 1970-01-01
    • 2011-09-18
    • 2010-09-14
    • 1970-01-01
    • 2016-04-21
    • 2016-05-15
    • 2020-11-29
    • 1970-01-01
    相关资源
    最近更新 更多