如何在没有用户名/密码的情况下确保从移动应用程序发出的API呼叫



我买了一个可以在移动应用程序中使用的API。API如预期的那样包含密钥和用户名。在应用程序中,这个API需要在付款确认时调用。

我发现使用像Fiddler这样的工具,可以看到应用程序发出的请求。如果是这样的话,完全访问API签名只需要几秒钟的时间。

如果有人能帮助解决/增加这个问题,那将是很大的帮助。

我的想法:

    使用一个服务器来调用这个API,而不是直接调用它
  1. 如果使用服务器,问题仍然存在,因为对服务器的API调用(最终调用所购买的API)也可以被中断/访问
  2. 如何保护应用程序对服务器的调用?

技术:Angular JS, Node JS, Ionic framework

看看我对这个问题的回答。而不是使用用户名和密码,您的后端可以提供一个额外的资源,允许用户创建具有特殊作用域的令牌。在你的AngularJS应用中,你可以使用$http或$resource服务(如果包含了ngResource模块)来获得这样的令牌,它只允许你访问客户端真正需要的后端部分。

此令牌必须缓存在客户端并包含在每个请求的标头中。

在AngularJS中,如果你使用的是你创建的模块的config函数,那么在每个请求的头中存储令牌可以在一个中心位置完成。

    app.config(function($httpProvider) { $httpProvider.defaults.xsrfCookieName = "TOKEN" }
AngularJS还提供了一些额外的安全特性。例如,您可以使用JSON漏洞保护机制。如果使用这种方法,则后端必须向每个JSON响应体添加字符)]}'(也可以覆盖默认字符)。对于其他客户端,JSON响应将是无效的Javascript代码,但在你的AngularJS应用程序中,这些字符将被自动删除。

为应用程序实现安全性的最佳方法是阅读和理解OAuth2规范。

在这段视频中,从11:36到17:26描述了JavaScript流程。

这个站点为不同的编程语言提供了一些标准的实现。

这个标准的一些方面是,所有的客户端和重定向url必须在一个额外的认证服务器上注册。客户端由唯一的客户端id标识。

为了避免其他应用程序拦截您提取令牌的请求,原始令牌应该只在一小段时间内有效,并且每个api请求必须经过SSL加密。

为提供单点登录也可以使用刷新令牌

相关内容

最新更新