我应该混淆Android应用程序存储的OAuth消费者秘密吗?

Pēt*_*une 43 security storage android oauth

我的Android应用程序包含Twitter API的OAuth消费者秘密.目前它.properties以纯文本形式存档,因此有人无需花费精力在APK中查找.

我是否应该采取措施来掩盖它(例如,rot13或存储在混淆的Java代码中)?或者我应该避免做任何这样的事情,因为它会造成虚假的安全感?

人们通常如何在Android应用中分发/存储OAuth秘密?这个秘密被盗和被滥用的常见程度如何?

Era*_*mer 41

真正的问题是攻击者从窃取它中获得了什么......

你应该尽力保护秘密,但最后,一个积极性高的黑客总能在一个已安装的应用程序中找到它.所以这是秘密与提取难度的价值.

客户端密钥的值是模拟应用程序.它不提供对用户数据的任何访问.但是,由于Twitter支持自动向以前批准的应用程序颁发凭据(他们使用Twitter流程登录),攻击者可能会使用您的秘密构建一个Web应用程序并使用盲目重定向窃取用户数据.

Twitter实施的问题在于他们不会向开发人员询问应用程序的性质.如果他们这样做了,他们就不会给你一个秘密,并且会阻止任何人使用你的客户端凭据构建一个Web应用程序并窃取已经批准它的用户的数据.

混淆是一种选择,但却是一种弱选择.将秘密转移到充当API代理的Web服务器是另一个,但这只是将问题移到别处,因为现在您的应用必须对代理服务器进行身份验证.但是,如果您要求用户登录您的站点(可以通过Web视图使用Twitter登录),则此模式可以相当安全.这样,有人试图滥用您的代理将需要他们的用户在您的服务上打开帐户,这不是很吸引人.

简而言之,继续进行模糊处理.它没有伤害.考虑使用代理模式.也许让Twitter知道他们的安全政策"不太好".