如何防止直接在 SPA 项目上向 RESTful API 发送请求?
How to prevent sending requests to RESTful API directly on a SPA project?
我有一个基于 RESTful API 的单页应用程序。通常,所有 API 都有一个路由访问,可以在检查 Web 应用程序时找到。
虽然我有基于用户令牌的身份验证机制,但黑客可以找到 API 路由并使用他给定的令牌直接向 API 发送许多请求。
防止此类行为的最佳解决方案是什么?我在考虑 CSRF,但是由于 API 是基于 REST 的,而且该项目是一个 SPA,我认为我应该有另一种机制。
你能帮帮我吗?
您无法验证客户端应用程序,这是不可能的。如果用户可以从 spa 发送请求,因为他们有凭据和端点可以将它们发送到,他们可以使用 Burp 中的任何客户端通过 ZAP 或 Postman 来 curl 或其他任何发送请求。
您的 API 必须具有弹性,您应该根据您的威胁模型在服务器端实施速率限制、用户配额、监控和安全操作实践,以减轻这种风险。
在实践中,这可能意味着以一种在网络级别对 DoS 具有弹性的方式托管 API,具有每个用户的请求速率限制,识别由于某种原因对服务器造成负担的功能(调用外部服务、发送电子邮件等)和 protect/monitor 那些更加小心。没有一种放之四海而皆准的解决方案。
我有一个基于 RESTful API 的单页应用程序。通常,所有 API 都有一个路由访问,可以在检查 Web 应用程序时找到。
虽然我有基于用户令牌的身份验证机制,但黑客可以找到 API 路由并使用他给定的令牌直接向 API 发送许多请求。
防止此类行为的最佳解决方案是什么?我在考虑 CSRF,但是由于 API 是基于 REST 的,而且该项目是一个 SPA,我认为我应该有另一种机制。
你能帮帮我吗?
您无法验证客户端应用程序,这是不可能的。如果用户可以从 spa 发送请求,因为他们有凭据和端点可以将它们发送到,他们可以使用 Burp 中的任何客户端通过 ZAP 或 Postman 来 curl 或其他任何发送请求。
您的 API 必须具有弹性,您应该根据您的威胁模型在服务器端实施速率限制、用户配额、监控和安全操作实践,以减轻这种风险。
在实践中,这可能意味着以一种在网络级别对 DoS 具有弹性的方式托管 API,具有每个用户的请求速率限制,识别由于某种原因对服务器造成负担的功能(调用外部服务、发送电子邮件等)和 protect/monitor 那些更加小心。没有一种放之四海而皆准的解决方案。