【问题标题】:How to prevent sending requests to RESTful API directly on a SPA project?如何防止在 SPA 项目上直接向 RESTful API 发送请求?
【发布时间】:2021-05-25 01:05:27
【问题描述】:
我有一个基于 RESTful API 工作的单页应用程序。通常,所有 API 都有一个路由访问,可以在检查 Web 应用程序时找到。
虽然我有基于用户令牌的身份验证机制,但黑客可以找到 API 路由并使用他给定的令牌直接向 API 发送许多请求。
防止这种行为的最佳解决方案是什么?我在考虑 CSRF,但是由于 API 是基于 REST 的,并且项目是 SPA,我认为我应该有另一种机制。
你能帮帮我吗?
【问题讨论】:
标签:
api
rest
security
single-page-application
csrf
【解决方案1】:
您无法验证客户端应用程序,这是不可能的。如果用户可以从 spa 发送请求,因为他们有凭据和端点可以将它们发送到,他们可以使用 Burp 中的任何客户端通过 ZAP 或 Postman 来 curl 或其他任何方式来发送请求。
您的 API 必须具有弹性,您应该根据您的威胁模型在服务器端进行一般的速率限制、用户配额、监控和安全操作实践,以降低这种风险。
在实践中,这可能意味着托管 API 的方式可以在网络级别上对 DoS 具有弹性,具有每个用户的请求速率限制,识别由于某种原因对服务器造成负担的功能(调用外部服务、发送电子邮件等)并更仔细地保护/监控这些。没有一种万能的解决方案。