在android中,如何保护敏感数据或如何在开发sdk时验证请求

时间:2013-08-22 01:18:02

标签: java android security oauth sdk

我正在为第三方应用开​​发sdk以供使用,我需要验证来自我服务器上的sdk的请求。

现在我通过在sdk中对私有密码进行硬编码来解决这个问题,然后sdk使用这个秘密来散列(md5)其请求参数作为一个符号,该符号与其他参数一起发送到服务器。然后,服务器可以检查签名,看看它是否由正确的私人秘密签名,因此,我开发了sdk。

问题是:

  • 如何保护这个隐私免受逆向工程?
  • 我可以通过在android NDK中封装请求进程来保护私密吗?
  • 还有其他更好的方法来实现我的根本目的:验证我的sdk请求吗?其他sdks怎么办?

感谢。

1 个答案:

答案 0 :(得分:1)

如果您试图阻止第三方使用自己的软件而不是您提供的软件,it's not possible

您需要确保API提供安全功能,并且不依赖SDK中的控件。例如,不要通过API公开敏感数据,而SDK根本没有要调用的命令;在服务器端使用速率限制而不仅仅是在SDK;这与网站和客户端javascript产生的情况相同:您根本不能信任客户端脚本的完整性,并确保您的网站无论如何都是安全的。

限制API使用的正常方式是双重的:

  1. 用户身份验证 - 每个想要使用您服务的用户都会创建一个用户帐户,并且必须建立经过身份验证的会话才能使用它。
  2. API密钥 - 每个想要访问API的第三方开发人员都被授予API密钥,并且由他们来保护他们的密钥。 API密钥用于验证请求,例如appending a MAC over the request