隐藏移动应用中的秘密

时间:2015-10-15 11:35:03

标签: android ios authentication mobile oauth-2.0

我拥有一个移动应用,希望它能够使用我的网络API。我计划使用oauth2用户凭据流(https://bshaffer.github.io/oauth2-server-php-docs/grant-types/user-credentials/)。

但是,我想验证应用以及用户凭据(我不希望任何其他应用或用户通过我的API验证,以便在此应用之外使用)。

我看到该库指定了这个:

$ curl -u TestClient:TestSecret https://api.mysite.com/token -d 'grant_type=password&username=bshaffer&password=brent123'

这对我有用,但它假设每个下载的移动应用程序(它是公开的)都需要将TestClient:TestSecret预先加载到应用程序中。

如何确保不会从应用中提取这些内容,以允许用户使用其他应用/系统等的用户凭据调用我的API?

1 个答案:

答案 0 :(得分:0)

如果预先加载,则无法进行。你只能增加工作因素,使其更难,并减少成功的攻击者。

一种解决方案是让用户登录您的服务器并在此时获取凭据,然后将其存储在钥匙串中。关于Dropbox和类似应用程序如何处理这个问题。但即使保留用户的凭据也是一个难题。

下一期是中间人(MITM)攻击,你需要在应用程序中固定证书以避免这种情况。