【发布时间】:2015-03-18 23:17:14
【问题描述】:
我有一个 REST JSON API(内置于 .NET),需要由以下客户端(通过 HTTPS)使用:
- SPA 网站 (AJAX)
- 移动应用程序
一切(API、SPA 网站、移动应用程序)都在内部。
通常对于 API,我会使用基本身份验证,但很明显,一旦您将 API 开放给 AJAX,安全性就会变得棘手。
关于“保护”API 的说明 - 我主要是想阻止爬虫对 API 进行黑客攻击/锤击,而且数据并不是完全保密的。
这是我想到的解决方案:
- 什么都不做。让它保持打开状态,但使用节流/速率限制来阻止我的 API 被抓取。
- 创建 AJAX 调用需要通过的中间人服务器。显然这意味着有额外的延迟,代码等加倍。
- 在客户端/服务器之间使用带有 nonces 和约定消息格式的 HMAC 身份验证,并且只允许来自一组允许的域的 CORS。 (是的,我知道 Origin 标头可以被欺骗)。
我倾向于选项 3。由于我们通过 HTTPS,因此无法嗅探请求,但显然我可以简单地转到 SPA 应用程序,打开 Fiddler 并查看 HMAC 消息,但随机数会停止重放攻击。显然,如果有人有这种倾向,他们可以下载 SPA 应用程序的 minified JS,找到 AJAX 调用发生的位置,并以某种方式找出 HMAC 格式。这是我能看到的唯一缺点。
我能不能给点建议?
谢谢
【问题讨论】:
标签: .net ajax api security rest