Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何保护简单的Node.js RESTful API_Node.js_Security_Authentication_Oauth_Jwt - Fatal编程技术网

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

如何保护简单的Node.js RESTful API,node.js,security,authentication,oauth,jwt,Node.js,Security,Authentication,Oauth,Jwt,我正在开发一个简单的新闻应用程序,用户无需登录即可查看最新新闻,我不知道如何确保它的安全性,我已经了解到应该使用带有OAuth2的JWT,但据我所知,用户必须登录提供商才能获得令牌,但我希望用户无需登录即可读取数据。 我现在关心的是如何防止其他人在他们的应用程序中使用我的API,我也关心DoS攻击。挑战 我正在开发一个简单的新闻应用程序,用户无需登录即可查看最新新闻,我不知道如何确保它的安全 你给自己带来了一个巨大的挑战,因为即使你要求你的用户登录,这仍然是一个巨大的挑战,因为我们所知道的网络是

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

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

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

保护API服务器并将其锁定到特定应用程序需要在每个请求中使用某种类型的机密,以便验证请求的执行情况,但一旦您将web应用程序或移动应用程序公开,其上的任何机密现在都在公共域中,因此不再是机密,最好将其用作弱标识符

网络应用 web应用程序在浏览器中运行,因此攻击者只需检查页面源并提取秘密,然后将其用于自动脚本或来自
curl
的手动请求或Postman之类的工具

移动应用 一些开发者认为,因为移动应用程序是以二进制形式发布的,他们可以把秘密放在那里,没有人会发现它。。。我不得不说,在过去我是其中之一,但后来我了解到,很多开源工具的存在使得这项任务变得微不足道,甚至连一个编写脚本的孩子都能做到。我的首选工具是,您可以在我写的这篇文章中看到一个使用它的示例:

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

:

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

值得注意的是,一旦某个应用程序发布,它所附带的任何敏感信息都必须被视为已被泄露

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

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

访问API服务器的用户和用户之间的差异 我写了一系列关于移动API安全性的文章,在这篇文章中,您可以详细阅读什么对您的API服务器提出要求的区别:

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

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

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

保护API服务器并将其锁定到应用程序 但我希望用户能够在不登录的情况下读取数据。 我现在关心的是如何防止其他人在他们的应用程序中使用我的API

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

我必须说,对于移动应用程序来说,当采用移动应用程序认证概念时,这可以以非常高的可信度来实现,但对于web应用程序,我们可以通过使用人工智能解决方案尽最大努力来实现

要了解如何为web应用程序做到这一点,请阅读我对应用程序调用的安全api数据提出的问题,特别是题为“保护api服务器”的部分

对于移动应用程序,您应该阅读我在如何为移动应用程序保护API REST?一节中提出的问题,更具体地说,在保护API服务器一节和“可能更好的解决方案”一节中

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

拒绝服务攻击 你还担心DoS攻击

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