我已经解决了一个问题,即我无法理解组织如何从任何收集数据的人那里保护他们的公共api。我知道我们使用passport和其他身份验证令牌的方式来保护私人信息不受未经授权的用户的攻击。但也有一些像公共搜索引擎这样的东西,用户不需要经过身份验证就可以通过搜索或访问个人资料页面在Facebook上找到一个人。这意味着有一些开放的公共api不需要来自用户的身份验证。
但在经历了几个组织之后,我没有得到任何可以通过Postman或简单的url访问的公共api请求。
所以我感兴趣的是组织如何保护他们的公共api不受请求的影响。前端如何向这些公共(有点私人的api)发送请求,或者即使它对所有类型的公共api调用都有某种默认的api密钥,他们如何从人们那里保护这些请求,如果在我们的现代浏览器中,我们可以访问本地存储或Cookie,在那里我们可以提取公共api_token
我对MERN STACK和Laravel+SPA React应用程序感到困惑。
为api调用开发公共路由,它们都可以从浏览器url或poster访问,除非该路由是私有的,并且需要passport或jsonwebtoken中的auth_token,而这已经要求用户注册。但我正在努力在我的应用程序中实现用户能够在无需身份验证的情况下搜索和访问产品详细信息。
但很明显,我不喜欢任何类型的大数据工程师轻易地从我的网络应用程序中窃取所有公共数据,除非他不懒惰,为每个公共产品详细信息页面进行html解析。
那么,如何在我的后端应用程序中保护上述公共api路由呢。它如何为Facebook、谷歌、领英等大型组织做准备?
我之所以问这个问题,是因为很容易找到一些MERN Stack课程,他们会教你如何为授权用户处理身份验证等等。甚至LAMP技术。但没有人解释如何在不要求任何用户登录的情况下保护这些数据
提前非常感谢任何将要回答这个漫长而令人困惑的问题的人。
但也有一些东西,比如公共搜索引擎,不需要用户通过身份验证就可以在Facebook上通过搜索或访问个人资料信息页面来找到一个人。
当我用PHP编码并使用Prestashop电子商务时,我使用了一个类似于本文要点中的Crawler/Bot,但这很容易被欺骗,因为它是基于HTTP_USER_AGENT
的。这里的一个更好的方法是使用IP地址来查找知名的爬虫,也就是来自谷歌和必应等搜索引擎的爬虫,但这对阻止糟糕的爬虫和机器人无效。因为它们非常频繁地切换IP地址。
但经过几个组织,我没有设法获得任何可以通过Postman或简单的url访问的公共api请求。
像Facebook这样拥有大量资源的公司,甚至是规模较小的公司,都会使用人工智能(AI)来区分谁在做好请求和坏请求,而这种类型的软件被称为用户行为分析(UBA):
Gartner定义的用户行为分析(UBA)是一个关于检测内部威胁、定向攻击和金融欺诈的网络安全过程。UBA解决方案着眼于人类行为模式,然后应用算法和统计分析从这些模式中检测出有意义的异常——表明潜在威胁的异常。UBA不是跟踪设备或安全事件,而是跟踪系统的用户。像Apache Hadoop这样的大数据平台正在增加UBA的功能,允许它们分析价值PB的数据,以检测内部威胁和高级持久威胁。
所以这一定是你很难通过Facebook等公司的API的原因,但这并不意味着这是不可能的,因为黑客一直在这么做,大公司每年发生的数据泄露数量就是一个证明。
我之所以问这个问题,是因为很容易找到一些MERN Stack课程,他们会教你如何处理授权用户的身份验证等等。甚至LAMP技术。但没有人解释如何在不要求任何用户登录的情况下保护这些数据
这可能是因为开发人员中的一个常见误解,他们并不真正理解谁与什么正在向API服务器发出请求之间的区别。
访问API服务器的世界卫生组织和什么不同
我写了一系列关于API和移动安全的文章,以及为什么你的移动应用程序需要API密钥?我将引用以下内容:
what是向API服务器发出请求的东西。它真的是你的移动应用程序的真实实例,还是机器人程序、自动脚本或攻击者用Postman这样的工具手动在你的API服务器上戳来戳去?
是移动应用程序的用户,我们可以通过多种方式对其进行身份验证、授权和识别,例如使用OpenID Connect或OAUTH2流。
将谁视为用户,您的API服务器将能够对数据进行身份验证和授权访问,并将What作为代表用户发出请求的软件。
因此,在我看来,许多开发人员没有意识到请求中Who和What之间的差异,因此他们专注于Who的解决方案。
可能的解决方案
那么,我如何在后端应用程序中保护上述公共api路由。它如何为Facebook、谷歌、领英等大型组织做准备?
这些组织正在使用非常复杂的UBA解决方案,就成本而言,这些解决方案可能不是每个组织都能达到的,或者因为它们是专有解决方案,但也存在其他解决方案,您可以阅读我对问题secure api data from calls out of the app
的另一个答复中的保护API服务器部分,以了解如何逐步提高web应用程序的API服务器的安全性。
如果您还需要为来自移动应用程序的请求保护API服务器,那么您可以通过使用移动应用程序验证概念,以对移动应用程序非常高的信心将其锁定,您可以在我对问题如何为移动应用程序保护API REST的回答中了解更多信息。
你想多跑一英里吗
如果不提及OWASP基金会的出色工作,我就无法完成对安全问题的任何回应。
对于Web应用程序
OWASP Web十大风险
OWASP Top 10是一个功能强大的web应用程序安全意识文档。它代表了对web应用程序最关键的安全风险的广泛共识。项目成员包括来自世界各地的各种安全专家,他们分享了制作这份名单的专业知识。
网络安全测试指南:
OWASP Web安全测试指南包括一个";最佳实践";用户可以在他们自己的组织中实现的渗透测试框架;低电平";渗透测试指南,描述了测试最常见的web应用程序和web服务安全问题的技术。
适用于移动应用程序
OWASP移动安全项目-十大风险
OWASP移动安全项目是一个集中的资源,旨在为开发人员和安全团队提供构建和维护安全移动应用程序所需的资源。通过该项目,我们的目标是对移动安全风险进行分类,并提供开发控制,以减少其影响或被利用的可能性。
OWASP-移动安全测试指南:
《移动安全测试指南》(MSTG)是一本关于移动应用程序安全开发、测试和逆向工程的综合手册。
对于APIS
OWASP API安全前10名
OWASP API安全项目旨在通过强调不安全API中的潜在风险并说明如何减轻这些风险,为软件开发人员和安全评估人员提供价值。为了实现这一目标,OWASP API安全项目将创建并维护API十大安全风险文档,以及创建或评估API时最佳实践的文档门户。
很多时候我都看到过通过Basic Auth或OAuth保护的API。当您使用基本身份验证时,您会发送一个带有base64编码的用户名和密码的授权标头。使用HTTPS/SSL连接时,会对标头进行加密。
OAuth有点涉及,但遵循了类似的想法。您的OAuth令牌也通过加密的标头发送。您可以在此处阅读有关OAuth的更多信息:https://www.digitalocean.com/community/tutorials/an-introduction-to-oauth-2