如何保护一个简单的Node.js RESTful API



我正在开发一个简单的新闻应用程序,用户可以在不登录的情况下查看最新新闻,我不知道如何确保它的安全,我读到应该使用带有OAuth2的JWT,但据我所知,用户必须登录到提供商才能获得令牌,但我希望用户能够在不登录时读取数据。我现在关心的是如何防止其他人在他们的应用程序中使用我的API,我也担心DoS攻击。

挑战

我正在开发一个简单的新闻应用程序,用户无需登录即可查看最新新闻,我不知道如何使其安全

好吧,你给自己带来了一个非常巨大的挑战,因为即使你要求用户登录,这仍然是一个巨大的挑战。因为我们所知道的网络在早期的设计中,天真地认为只有善意的人才会使用它,因此,保护一些本来就不安全的东西变得非常困难。

确保API服务器安全并将其锁定到特定的应用程序需要在每个请求中使用某种秘密,以验证请求的执行内容,但一旦您将web应用程序或移动应用程序发布到公众中,其上的任何秘密现在都在公共域中,因此不再是秘密,因为最好将其用作弱标识符。

Web应用程序

web应用程序在浏览器中运行,因此攻击者所需要做的就是检查页面源并提取机密,然后在自动脚本或curl或Postman等工具的手动请求中使用它。

移动应用程序

一些开发人员认为,因为移动应用程序是以二进制形式发布的,所以他们可以把秘密放在那里,没有人会找到它……我不得不说,过去我就是其中之一,但后来我了解到,有很多开源工具可以使这项任务变得微不足道,即使是脚本孩子也可以做到,你可以在我写的这篇文章中看到一个使用它的例子如何用静态二进制分析从移动应用程序中提取API密钥:

可用于反向工程的开源工具范围很大,我们在本文中确实无法触及这个主题的表面,但我们将重点使用移动安全框架(MobSF)来演示如何对我们的移动应用程序的APK进行反向工程。MobSF是一个开源工具的集合,它们在一个有吸引力的仪表板中显示结果,但MobSF和其他地方使用的相同工具可以单独使用,以实现相同的结果。

MobSF-移动安全框架:

移动安全框架是一个自动化的、一体化的移动应用程序(Android/iOS/Windows)笔测框架,能够执行静态分析、动态分析、恶意软件分析和web API测试。

要点是,一旦应用程序发布,其中包含的任何敏感信息都必须被视为已泄露。

JWT和OAUTH2

我读到应该使用带有OAuth2的JWT,但据我所知,用户必须登录到提供商才能获得令牌

是的,用户需要登录才能获得OAuth令牌,但用户登录成功后产生的任何类型的令牌都只能识别请求中的用户,而不是执行请求的用户。根据我的经验,这是开发人员中非常常见的误解,无论他们是初级还是高级开发人员。

访问API服务器的世界卫生组织和什么不同

我写了一系列关于移动API安全的文章,在文章中,为什么你的移动应用程序需要API密钥?您可以详细阅读是什么向您的API服务器提出请求:之间的差异

what是向API服务器发出请求的东西。它真的是你的移动应用程序的真实实例,还是机器人程序、自动脚本或攻击者用Postman这样的工具手动在你的API服务器上戳来戳去?

是移动应用程序的用户,我们可以通过多种方式对其进行身份验证、授权和识别,例如使用OpenID Connect或OAUTH2流。

您可能会感到惊讶的是,有时甚至您的合法用户也可能会攻击您的API服务器,以试图从您的服务中获得好处,否则他们将无法访问。

将API服务器安全并锁定到应用程序

但我希望用户能够在不登录的情况下读取数据。我现在关心的是如何防止其他人在他们的应用程序中使用我的API

要在您的应用程序中实现这一要求,您需要找到安全和锁定API服务器的方法,以便仅为来自web和移动应用程序的真实实例的请求提供服务。

我不得不说,对于移动应用程序来说,当采用移动应用程序验证概念时,这可以非常有信心地实现,但对于网络应用程序,我们可以通过使用人工智能解决方案,尽最大努力做到这一点。

要了解如何为web应用程序做到这一点,请阅读我对从应用程序调用中保护api数据问题的回答,特别是题为保护api服务器的部分。

对于移动应用程序,您应该阅读我对问题的回答如何为移动应用程序安全API REST,更具体地说,在保护API服务器可能的更好解决方案部分。

如果你已经阅读了我上面链接的两个答案,你现在可能会更好地理解为什么我最初说这是一个巨大的挑战。

DoS攻击

您还担心DoS攻击。

这通常不会在应用程序级别解决,而是最好在基础设施级别处理,比如在防火墙中,可以应用规则来识别和丢弃DoS数据包,但如果规则过于严格,他们也可能会阻止合法用户,而如果他们过于放松,他们会让DoS数据包包过。要获得更有效的DoS攻击保护,您需要使用专门的软件,即使是这种软件,在大规模DoS攻击期间也可能需要手动干预。

因此,我在这里的建议是,您可以先在防火墙中添加一些规则来丢弃DoS数据包,和/或如果您使用的是云提供商,您可能想看看他们可以在您的帐户中提供什么级别的DoS保护。例如,我知道一些CDN提供商在某种程度上确实免费提供DoS保护,因此值得您考虑通过CDN路由所有流量,这也带来了CDN的其他传统好处,也就是从离客户最近的位置为资产提供服务。

你想多走一步吗

在回答任何安全问题时,我都会毫不犹豫地引用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时最佳实践的文档门户。

最新更新