首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无需用户身份验证即可保护移动应用程序私有REST API的最佳方法

无需用户身份验证即可保护移动应用程序私有REST API的最佳方法
EN

Stack Overflow用户
提问于 2015-01-31 20:07:53
回答 2查看 23.4K关注 0票数 24

我正在为我的移动应用程序制作一些Restful API。

APP和webserver之间的通信必须在REST中进行。这些apis应该是私有的,只有我的应用程序才能调用它们以获得成功的结果。

困难的部分是,我的应用程序中不需要用户id和密码,所以我不知道如何在没有基本用户身份验证的情况下使用移动应用程序限制rest API。

我想的一种解决方案是嵌入某种硬编码字符串,这样当移动应用程序使用that风格的url时,它们就会通过ssl以加密格式传递该url。但我知道这看起来是个很糟糕的解决方案..

在这种情况下,请建议最好的解决方案。

EN

回答 2

Stack Overflow用户

发布于 2018-11-14 21:09:04

你确实可以让逆向工程师的工作变得更加困难,但不能像Nasir说的那样,通过引入数学上的困难问题并相应地转换你的硬编码字符串来让它变得无懈可击。

这个怎么样。假设在app中硬编码了一个数字A。服务器发送两个数字B & P (P是一个大素数)。现在,您可以计算将由服务器使用(A^B) % P验证的实际数量。你的应用现在用Server's Public Key加密了(A^B)%P的答案。服务器将使用它的私钥解密它,验证它,并将发出一个具有到期时间的令牌(可能是jwt)。然后,您的应用程序和服务器可以使用该令牌进行通信。您可以在应用程序启动时执行一次计算,并存储令牌以供将来使用。

票数 1
EN

Stack Overflow用户

发布于 2015-01-31 20:29:12

我建议在app中创建一个复杂的令牌,由时间戳+ appId +任何其他可以在服务器上复制的值组成,并使用这些值在每个请求的头部进行身份验证。

例如,您可以在数据库中创建一个虚拟“用户”,并在其中存储deviceToken并将其用于您的算法。

我个人保留了一个公开的API请求,它是timestamp getter,它返回300秒内要使用的服务器的时间戳。

因此,在每个请求之前,获取时间戳,并发送您创建的令牌,将其复制到服务器上,从而验证请求。

不过,平庸的黑客可以对应用程序进行反向工程,并复制您的令牌

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28251404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档