如何安全地将应用程序数据发送到收件人/服务器

时间:2014-06-22 18:39:08

标签: java android security encryption

我正在开发一个Android应用程序,用户必须填写并成功将一些文本字段的数据发送到收件人/服务器,以启用功能。

最大的问题是如何以安全的方式做到这一点,以防止例如反编译。我担心的不是运输过程中的安全问题,而是运输媒介的安全性。

到目前为止我的想法/阅读内容:

  1. 我可以使用Java Mail API通过邮件发送数据。 首先,我不希望要求用户必须输入他的邮件凭据和SMTP服务器。 这意味着我必须将凭据包含在应用程序中的邮件帐户中。 为了避免有人反编译应用程序并接管我的邮件帐户的情况,我想到了加密方法,但即使我保存密码的aes加密版本,攻击者也可以反编译应用程序并添加一个syso来输出解密密码。 这同样适用于OAuth身份验证,因为我必须存储身份验证令牌。 除了邮件版本之外,我还读到了一些关于从Web服务获取POST请求的密码,这看起来似乎并不安全。

    我可以在不需要凭证的情况下搜索免费的smtp服务器,但我想要一些我可以依赖的东西,而不是每天醒来并查看服务是否仍然有效。

  2. 将数据发送到网络服务。 好的,这对我来说需要更多的工作,但我会接受,如果有一个解决方案没有保存应用程序中的凭据或者有一个接受每个人的数据的Web服务。

  3. 我忽略了什么吗?或者,如果没有询问用户的邮件凭证或Google帐户等,是否没有安全的方法?

1 个答案:

答案 0 :(得分:0)

  1. OAuth可能会奏效。关于OAuth的好处是,如果令牌被泄露,它可以在服务器端被撤销。

  2. 您可以创建一个接受某些端口上的TCP连接的Web服务。您可以使用一些身份验证机制,例如在接受数据之前执行的摘要式身份验证。

  3. 另一种选择是使用Golgi之类的API。高尔基需要开发人员密钥,应用密钥和应用实例ID才能连接到服务器并发送数据。如果这些凭据以某种方式受到损害,您只需更改应用密钥并通过Play商店推送新版本的应用。