如何保护仅从前端使用的 API(Ajax 调用)

How to secure an API used only from front-end (Ajax call)

好吧,我创建了一个 API 来管理我们网站的一些附件上传并存储到 Amazon S3 存储桶中

场景:一旦访问者/用户进入表单并希望将其与附件一起提交,一旦选择了文件然后单击按钮 Ajax 请求触发到微服务 API 所以它可以将文件存储到 S3 中做一些处理然后 return 直接 link 或标识符。

问题是:我们如何使用短期令牌或类似的东西对用户进行身份验证,而不会被劫持、误用令牌..

在Javascript中,访问者可以看到所有内容,我们尽量不在后端集成任何繁重的进程

如果我直接回答了你的问题,你有一个 Web 界面,其中文件上传到 S3 存储桶,你需要确保在某个后端 API(例如 REST)所有文件上传命令会有鉴权和授权。

答案在很大程度上取决于您的体系结构,但一般来说,所有 Javascript 调用都只是 HTTP 调用。所以你需要 HTTP authentication/authorization。通常,REST over HTTP 最直接的方法是基本身份验证,其中客户端在每个请求中发送一个凭据。起初这听起来可能很奇怪,但它是非常标准的,因为 HTTP 应该是无状态的。

所以简短的回答,至少对于我刚才描述的场景,是要求用户提供 Javascript 将保存在客户端的凭据,然后发送 REST 接口的基本身份验证能理解。然后服务器端进程会得到这些信息并决定某个文件是否可以写入某个S3存储桶。