Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.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
Android 保护Dropbox访问令牌_Android_Security_Xamarin_Dropbox - Fatal编程技术网

Android 保护Dropbox访问令牌

Android 保护Dropbox访问令牌,android,security,xamarin,dropbox,Android,Security,Xamarin,Dropbox,因此,我正在使用Xamarin Android制作dropbox应用程序,供公司客户使用(不会在playstore上发布)。由于其所有用户使用相同的dropbox帐户,因此应用程序的访问令牌在源代码中硬编码如下: var dbx = new DropboxClient("abc_token_xyz") 我觉得这不是最好的方法,因为如果有人得到了apk,他们可以反编译应用程序并看到令牌 我的问题是,保护代币的最佳方式是什么?或者我应该使用这种方法吗?访问令牌应该是设备独有的,而不仅仅是用户独有的

因此,我正在使用Xamarin Android制作dropbox应用程序,供公司客户使用(不会在playstore上发布)。由于其所有用户使用相同的dropbox帐户,因此应用程序的访问令牌在源代码中硬编码如下:

var dbx = new DropboxClient("abc_token_xyz")
我觉得这不是最好的方法,因为如果有人得到了apk,他们可以反编译应用程序并看到令牌


我的问题是,保护代币的最佳方式是什么?或者我应该使用这种方法吗?

访问令牌应该是设备独有的,而不仅仅是用户独有的单独撤销访问权需要单独的设备令牌,这是您必须考虑的问题:如果设备丢失/被盗怎么办?如果设备的用户出售了设备/设备被更换了怎么办

每当一台设备丢失/被盗/转移/停用时,在所有设备上推出一个新版本真的是不想做什么



这个答案是有效的,与令牌的服务无关(我不知道Dropbox的细节)为每个用户使用相同的Dropbox帐户可能是个坏主意(出于法律和/或安全原因)。例如,您应该确保仅一个令牌不足以更改密码或影响其他令牌,或者如果某个设备丢失,即使每个设备具有不同的令牌,您的安全性也是无效的。另外,我不知道您的建议是否违反了他们的ToS。

Dropbox API的设计意图是每个用户都链接自己的Dropbox帐户,以便与自己的文件交互。但是,从技术上讲,您可以只连接一个帐户,如您所示

正如已经讨论过的,问题在于可以从应用程序中提取访问令牌。这是一个更基本的问题,不仅仅是Dropbox API。也就是说,客户端应用程序不能保密。虽然您可以尝试各种方法来提高提取令牌的难度,但您不能让它变得不可能

因此,我们不建议采用这种方法。一旦有人拥有访问令牌,他们就可以使用它绕过您试图实施的任何访问控制,甚至撤销访问令牌本身,从而破坏您的应用程序

不过,要解决您的第一个问题,您可以:

  • 混淆代码中的标记,以便在检查应用程序时它不是一个简单的字符串。我确信已经有很好的Java模糊处理资源可用。请注意,它可以不模糊
  • 加密访问令牌。请注意,加密密钥也需要对应用程序可用,因此也可以提取它,以便解密访问令牌

此外,这两种技术都无法防止有人在设备上执行中间人攻击(通过在设备上安装可信证书)并检查应用程序本身的API调用以查看令牌。

我很确定这违反了DropBox的服务条款。最好先问问他们我没想到。。。谢谢但根据我的要求,所有设备积累的数据都需要集中在同一个dropbox帐户上,因此不能选择单独的帐户。开发人员使用dropbox作为应用程序的数据存储不是很常见吗?就像TapJet()一样。你认为他们使用这样的方法吗?