如何保护您的 API 免受滥用 - DRF 和 React

Posted

技术标签:

【中文标题】如何保护您的 API 免受滥用 - DRF 和 React【英文标题】:How to protect your API from abuse - DRF & React 【发布时间】:2022-01-21 20:42:33 【问题描述】:

我真的很难理解保护 API 端点的概念。

如果它被 React 暴露,你如何保护它免受滥用?

我了解如果用户要登录然后会获得令牌等。我明白了。但是假设有一个不需要有人登录的前端?

他们只需填写一份包含详细信息的表格,然后通过您的 API 传递,然后存储在数据库中。

是什么阻止了有人滥用您的 API?他们可以写一个脚本然后用垃圾数据攻击你的端点吗?

我就是不明白这是如何保护的?

【问题讨论】:

【参考方案1】:

您可以设置 CORS 标头允许的主机以及 速率限制器,以保护您在 Django 中的 API。

允许的主机: 表示 Django 站点可以提供的主机/域名的字符串列表。这是一种防止 HTTP Host 标头攻击的安全措施,即使在许多看似安全的 Web 服务器配置下也可能发生这种攻击。

CORS 标头: Cross-Origin Resource Sharing (CORS) 是一种基于 HTTP 标头的机制,它允许服务器指示浏览器应允许加载的任何来源(域、方案或端口),而不是它自己的来源资源。它用于与浏览器客户端一起工作。

速率限制:速率限制是您希望在特定时间间隔内允许的最大呼叫数。例如,每个未经身份验证的用户每分钟只能执行 100 个请求。

此外,如果您在 PaaS 服务中部署您的应用程序,那么您可以将您的 django 应用程序部署为内部服务,并将您的 react 应用程序部署为外部服务。那么 Django 不仅可以在容器内部使用,也不能在容器外部使用。

【讨论】:

感谢 MojixCoder - 据我所知,Django 允许托管与 API 无关?据我了解,CORS Headers 并不是为了保护服务器。但更多的是客户?无论如何,这都可以被欺骗。速率限制很好,将被应用,但仍将允许访问。我知道所有这些。但它不保护 API。想法?如果我在这里完全错了,请纠正我。我真的需要明白这一点。 是的,允许的主机与 api 无关,CORS 仅在您的客户端是浏览器时才重要。但是您可以通过速率限制来限制访问。 我还是不明白你们是如何保护端点的?使用您提到的方法,终点不是很安全?因为有绕过的方法。是什么阻止了某人编写一个达到您的 API 端点的滥用脚本?然后反过来用垃圾邮件填充你的数据库? 如果您正在寻找更高级的安全问题,请查看此link。阅读并搜索如何防范它们。但是绕过并不像你想象的那么容易 谢谢!我已经测试过了。根据您提到的方法,很容易绕过和垃圾邮件。我可以简单地添加我自己的标题等。我显然错过了一些东西。

以上是关于如何保护您的 API 免受滥用 - DRF 和 React的主要内容,如果未能解决你的问题,请参考以下文章

使用 Play Integrity API 来保护您的应用和游戏

使用 Play Integrity API 来保护您的应用和游戏

如何保护企业免受网络钓鱼

如何使用 IdentityServer4 保护 API(免受意外调用)?

如何保护mysql数据库免受任何人的侵害

Kong入门指南 - 保护您的服务