Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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
防止不受信任的客户端使用REST API的登录/注册端点_Rest_Api_Authentication_Flutter_Single Page Application - Fatal编程技术网

防止不受信任的客户端使用REST API的登录/注册端点

防止不受信任的客户端使用REST API的登录/注册端点,rest,api,authentication,flutter,single-page-application,Rest,Api,Authentication,Flutter,Single Page Application,实际上,我在ReactJs中有一个SPA+在Flatter中有一个移动应用程序+一个REST API,这些应用程序是用单独的服务器上运行的SailsJs开发的。当我们使用有效信息(id/密码)登录时,我使用API返回的安全会话cookie管理用户身份验证 因此,所有需要对用户进行身份验证的端点都受到保护(除非有其他我不知道的安全最佳实践?)。对其中一个受保护端点的每次调用都会检查会话cookie过期和有效性 我真的读了大量关于保护RESTAPI的主题和博客文章。我的问题从来没有或几乎没有得到解决

实际上,我在ReactJs中有一个SPA+在Flatter中有一个移动应用程序+一个REST API,这些应用程序是用单独的服务器上运行的SailsJs开发的。当我们使用有效信息(id/密码)登录时,我使用API返回的安全会话cookie管理用户身份验证

因此,所有需要对用户进行身份验证的端点都受到保护(除非有其他我不知道的安全最佳实践?)。对其中一个受保护端点的每次调用都会检查会话cookie过期和有效性

我真的读了大量关于保护RESTAPI的主题和博客文章。我的问题从来没有或几乎没有得到解决。所以现在我的主要问题是:

我如何限制我的公共API端点(当前登录和注册)仅用于我的受信任客户端应用程序(web和移动应用程序)?

如何防止他人开发的其他应用程序使用这些端点?

我不希望任何人通过我的API登录,除非它是在我正在开发的客户端应用程序中完成的。。。我不希望任何人在不知情的情况下复制我的应用程序,并以这种方式成功地使用具有0保护的API

我看到很多流行的服务都有登录API路由(例如Heroku),在Postman中无法使用相同的参数(403错误代码)访问这些服务。所以这是可能的。但是他们是怎么做到的呢?在专门的论坛上没有什么可以处理这个问题的,否则我会错过一些东西

我需要一个存储在客户机中的秘密令牌来进行身份验证,但它实际上是公开的,例如web开发人员工具

我需要一些建议

谢谢

用户身份验证不是应用程序身份验证 因此,所有需要对用户进行身份验证的端点都受到保护

该端点仅在识别、验证和授权请求中的his方面受到保护,而不是在请求中做了什么,这是一个开发人员不太了解的话题,无论是大三还是大四的开发人员

访问API服务器的用户和用户之间的差异 在我写的一篇题为《你可以更详细地阅读访问你的API服务器的人与人之间的区别》的文章中,我引用了以下内容:

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

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

因此,是API服务器的用户,您将能够验证和授权对数据的访问,什么是代表用户、您的正版应用程序、被篡改的应用程序、自动脚本或通过cURL手动拨弄您的API的人发出请求的软件,邮递员或类似工具

到目前为止,我希望您有足够的知识来理解为什么用户(谁)身份验证与应用程序(什么)身份验证不同

将API服务器锁定到应用程序 我如何限制我的公共API端点(当前登录和注册)仅用于我的受信任客户端应用程序(web和移动应用程序),该端点不需要对用户进行身份验证(因为存在用于完成此任务的端点…)

我认为,到目前为止,您可能已经清楚,需要保护的不仅仅是登录和注册端点,而不是请求所做的事情

如何防止其他人开发的其他应用程序使用这些端点? 我不希望任何人通过我的API登录,除非它是在我正在开发的客户端应用程序中完成的。。。我不希望任何人在不知情的情况下复制我的应用程序,并以这种方式成功地使用具有0保护的API

对于web应用程序来说,这是极难实现的,但在实现移动应用程序认证概念时,移动应用程序的可信度很高

用于web应用程序 由于web是如何构建的,检查web应用程序所需的只是点击F12或检查页面源代码,然后搜索从其他工具访问API服务器所需的任何内容

您可以学习一些有用的技术,帮助您的API服务器尝试只响应来自您期望的真正的web应用程序的请求,为此,我邀请您阅读应用程序调用的安全API数据,特别是专门用于保护API服务器的部分

用于移动应用程序 要了解如何将API服务器锁定到移动应用程序,我建议您阅读 问题是如何为移动应用程序保护API REST?有关保护API服务器和可能更好的解决方案的章节

要保护的端点 因此,所有需要对用户进行身份验证的端点都受到保护(除非有其他我不知道的安全最佳实践?)

如果您只想增强登录和注册端点的安全性,则由您自己决定,但我的建议是,您可以增强所有端点的安全性,以检测访问它们的内容

赫罗库和其他人的邮递员 我看到很多流行的服务都有登录API路由(例如Heroku),在Postman中无法使用相同的参数(403错误代码)访问这些服务。所以这是可能的。但是他们是怎么做到的呢?在专门的论坛上没有什么可以处理这个问题的,否则我会错过一些东西

我从未使用过Heroku,但当我使用的API在p中不起作用时