保持API调用私有/受保护

时间:2012-04-26 05:13:54

标签: javascript jquery ruby ajax sinatra

我正在开发一个主要是静态的网络应用程序 - 只是HTML / CSS / JS +资产。我正在使用Rack服务器(实际上很薄)服务它。

虽然应用程序大部分都是静态的,但是在此过程中还出现了一些服务器端需求。由于应用程序需要通过JavaScript与这些需求进行交互,因此我将Sinatra添加到堆栈中,以便我可以轻松地设置一些路由作为简单的API。

一个这样的API调用是发送电子邮件 - 网络应用程序需要一种向用户发送电子邮件的方式。我设置了一个可以使用包含JSON对象的POST调用的路由(/ api / mail),Ruby将触发一封电子邮件(通过SendGrid)。

这是我的问题 - 本质上,这些API调用是公开的。大多数情况下,这很好 - 但是通过电子邮件API,我想保护它,以便没有人可以通过简单的POST开始发送恶意电子邮件,冒充我的应用程序。

问题是,我不太确定如何验证这一点。 Web应用程序本身是客户端,而不是用户,因此密码或API密钥似乎毫无价值,因为任何人都可以嗅出POST标头并获取应用程序发布到API的凭据。

通过SSL加密所有内容是我唯一的选择,还是我错过了一些明显的解决方案?

1 个答案:

答案 0 :(得分:2)

在一天结束时,您所做的任何事情都很容易被刮掉。我会通过ip和session做一些激进的速率限制,不要认为其他任何事情是可能的(或有效的)