如何在AJAX应用程序中保护私有REST API

aar*_*les 21 javascript security api rest node.js

我知道发布了许多类似的问题,但没有一个是指用户可以访问代码的HTML/javascript应用程序.

我有一个用nodejs编写的私有REST API.它是私有的,因为它的唯一目的是为我的HTML5客户端应用程序(Chrome应用程序和Adobe Air应用程序)提供服务.因此,API密钥不是一个好的解决方案,因为任何用户都可以看到javascript代码.

我想避免机器人在我的服务器上创建帐户并消耗我的资源.

有没有办法来实现这个?

Chr*_*son 15

API密钥是一个不错的解决方案,尤其是当您需要对API密钥的请求源进行约束时; 如果原始Web请求来自授权来源(例如您的私有域),请考虑您应该只接受API密钥.如果Web请求来自未经授权的域,您可以直接拒绝处理请求.

您可以通过使用专门的编码方案(例如基于散列的消息身份验证代码(HMAC))来提高此机制的安全性.以下资源清楚地解释了这种机制:

http://cloud.dzone.com/news/using-api-keys-effectively

  • 推荐人可能会被欺骗,所以我没有卖得有效:http://www.cyberciti.biz/faq/linux-unix-appleosx-bsd-curl-command-httpreferer/ (5认同)
  • 同样重要的是要注意API密钥解决方案适用于许多其他API,包括谷歌地图,Flickr,Facebook等.诀窍在于实施. (2认同)