Don*_*ald 4 python security falconframework
我正在设置一个Web应用程序,该Web应用程序具有一个前端和一个后端,并通过RESTful方法与前端soley通信。如何确保后端端点只能由我自己的前端访问,而不能由其他任何人访问?我在这方面找不到太多信息。
如何确保后端端点只能由我自己的前端访问,而不能由其他任何人访问?
让我在这里告诉您一个残酷的事实……对于网络应用程序来说,这是不可能的,因为网络设计的本质是如何工作的。
让我们通过了解之间的差异来理解问题深入多了几分WHO和什么是访问您的API服务器,为什么私有API的不存在。
该世界卫生组织是Web应用程序,你可以进行身份验证,授权和以多种方式确定,如使用OAuth流和/或OpenID的用户。
通常,OAuth代表资源所有者向客户端提供对服务器资源的“安全委派访问”。它为资源所有者指定了一个在不共享凭据的情况下授权第三方访问其服务器资源的过程。OAuth专为与超文本传输协议(HTTP)配合使用而设计,本质上允许访问令牌由授权服务器在资源所有者的批准下发布给第三方客户端。然后,第三方使用访问令牌访问资源服务器托管的受保护资源。
OpenID Connect 1.0是基于OAuth 2.0协议的简单身份层。它允许客户端基于授权服务器执行的身份验证来验证最终用户的身份,并以可互操作且类似于REST的方式获取有关最终用户的基本配置文件信息。
现在,你需要一种方法来确定什么是你调用API服务器和这里的事情变得比大多数开发人员可能会觉得更靠谱。在什么是发出请求到服务器API的东西,是不是真的你的真正的Web应用程序或者是一个机器人,自动化脚本或攻击者手动打探你的API服务器就像邮差的工具吗?
那么找出什么开发人员往往求助于通常他们在头发送的API密钥,在cookie或隐藏在他们的Web应用程序的JavaScript代码和一些走一英里,并在网络在运行时计算它应用程序,因此成为与前一种方法相对的动态秘密,后者是嵌入在代码或标头中的静态秘密。
无论API是否没有公共可访问的文档,或者是否受到任何类型的秘密或身份验证机制的保护,一旦可以从Internet进行访问就不再是私有的,因此任何知道其居住地的人都可以对其进行访问。枚举每个端点很容易,就像使用开发工具中的“网络”标签一样。
在客户端运行的任何需要秘密访问API的内容都可能以不同的方式被滥用,您可以在本系列有关移动API安全技术的文章中了解更多 信息。尽管本文是在移动应用程序上下文中完成的,但它们仍与Web应用程序共享常用技术。他们将教您如何使用API密钥,用户访问令牌,HMAC和TLS固定来保护API以及如何绕过它们。
混淆会使您的Javascript代码难以理解,这将使逆向工程变得困难,但请记住,并非不可能,因此不要依赖它来隐藏敏感数据,而只是使它变得更难于理解。了解发生了什么。
您可能还想看看Google 的reCaptcha V3,它可以区分真实用户和自动化脚本,而无需用户交互。您将需要将其添加到Web应用程序的每个页面中。
reCAPTCHA是一项免费服务,可保护您的网站免受垃圾邮件和滥用的侵害。reCAPTCHA使用高级风险分析引擎和适应性挑战,以防止自动化软件参与您网站上的滥用行为。这样做是为了让您的有效用户轻松通过。
另一种更复杂的方法是使用在后端使用机器学习和人工智能的User Behavior Anlytics(UBA)工具来防止API滥用,但是它们无法100%阻止它。
为了解决这个问题什么是访问,你需要使用一个你的API服务器或全部在一系列有关手机API的安全技术,验证码V3和UBA解决方案的文章中提到,并接受了解决方案,它们只能促使你的API未经授权的访问服务器更难绕过,但并非没有可能。
因此,您可能很难找到和访问您的API,但却无法将其真正锁定到Web应用程序。
查看 CORS。并确保您的服务器只允许访问特定来源。
在后端 - 检查X-Requested-With请求中是否存在标头并设置为XMLHttpRequest. 如果没有适当的 CORS 握手,则此标头将不存在。
话虽如此,这只会保护您的 API 不被其他前端应用程序使用或直接从浏览器地址栏访问 - 因为浏览器尊重 CORS。人们仍然可以通过编程方式/CLI 伪造请求并将标头设置为他们想要的任何内容。
所以这实际上并不是“保护”,只是一种防止滥用和盗链的方法