【问题标题】:Securing a API consumed by AJAX保护 AJAX 使用的 API
【发布时间】:2015-03-18 23:17:14
【问题描述】:

我有一个 REST JSON API(内置于 .NET),需要由以下客户端(通过 HTTPS)使用:

  1. SPA 网站 (AJAX)
  2. 移动应用程序

一切(API、SPA 网站、移动应用程序)都在内部。

通常对于 API,我会使用基本身份验证,但很明显,一旦您将 API 开放给 AJAX,安全性就会变得棘手。

关于“保护”API 的说明 - 我主要是想阻止爬虫对 API 进行黑客攻击/锤击,而且数据并不是完全保密的。

这是我想到的解决方案:

  1. 什么都不做。让它保持打开状态,但使用节流/速率限制来阻止我的 API 被抓取。
  2. 创建 AJAX 调用需要通过的中间人服务器。显然这意味着有额外的延迟,代码等加倍。
  3. 在客户端/服务器之间使用带有 nonces 和约定消息格式的 HMAC 身份验证,并且只允许来自一组允许的域的 CORS。 (是的,我知道 Origin 标头可以被欺骗)。

我倾向于选项 3。由于我们通过 HTTPS,因此无法嗅探请求,但显然我可以简单地转到 SPA 应用程序,打开 Fiddler 并查看 HMAC 消息,但随机数会停止重放攻击。显然,如果有人有这种倾向,他们可以下载 SPA 应用程序的 minified JS,找到 AJAX 调用发生的位置,并以某种方式找出 HMAC 格式。这是我能看到的唯一缺点。

我能不能给点建议?

谢谢

【问题讨论】:

    标签: .net ajax api security rest


    【解决方案1】:

    我认为您有很好的想法来保护您的 Web API。以下是一些额外的想法:

    我认为,如果您使用/考虑/实施部分或全部机制,您的 Web API 将获得非常好的身份验证和安全性;-)

    希望对你有帮助, 蒂埃里

    【讨论】:

    • 很好的答案。我在所有这些方法中缺少的一件事——比如用于令牌的 localStorage——它们仍然需要通过每个请求通过网络传输——所以有人不能拦截它吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 2015-05-12
    相关资源
    最近更新 更多