我正在开发一个主要是静态的网络应用程序 - 只是 HTML/CSS/JS + 资产。我正在使用机架服务器(实际上很薄)来服务它。
虽然应用程序大部分是静态的,但在此过程中出现了一些服务器端需求。由于应用程序需要通过 JavaScript 与这些需求进行交互,因此我将 Sinatra 添加到堆栈中,以便我可以轻松设置一些路由以用作简单的 API。
一个这样的 API 调用是发送电子邮件 - Web 应用程序需要一种向用户发送电子邮件的方法。我设置了一个可以使用包含 JSON 对象的 POST 调用的路由(/api/mail),Ruby 将触发一封电子邮件(通过 SendGrid)。
这是我的问题 - 从本质上讲,这些 API 调用是公开的。大多数时候,这很好 - 但是使用电子邮件 API,我想保护它,这样任何人都无法通过简单的 POST 开始发送恶意电子邮件,冒充我的应用程序。
问题是,我不太确定如何对此进行身份验证。Web 应用程序本身是客户端,而不是用户,因此密码或 API 密钥似乎毫无价值,因为任何人都可以嗅出 POST 标头并获取应用程序发布到 API 的凭据。
通过 SSL 加密所有内容是我唯一的选择,还是我错过了一些显而易见的解决方案?