Android客户端和PHP服务器之间的加密

时间:2013-02-01 16:29:06

标签: android encryption https

在加密方面,我是一个彻头彻尾的noobie,我觉得我的问题都错了,让我解释一下:

我希望Android应用程序与服务器联系以获取要在应用中显示的项目。然后,如果用户与此项交互,我想向服务器发送反馈,告知已单击哪个项目以将其保存在数据库中。

首先,我不希望任何人在将这些“反馈”发送到服务器时通过网络“拦截”此“反馈”。所以我决定使用https连接。但是,假设我要求反馈的脚本是https://mydomain.com/myscript.php(带有POST请求)。我不希望有人对我的Android代码进行反向工程,并且看到我正在调用此脚本发送反馈,因为他可以将它用于同一目的。

然后我想“嘿,当我必须向服务器发送反馈时,我们只需从服务器抓取一个密钥将其发回”。但同样,要获得此密钥,我需要调用一个PHP脚本,如果有人可以调用此脚本,获取密钥,他就可以根据需要发送反馈。

在我看来,这种情况没有尽头。而且我知道有一个:D我认为我正在以完全错误的方式看待这个问题。你有一些指导方针吗?

谢谢!

1 个答案:

答案 0 :(得分:4)

不信任客户

您无法将信任扩展到客户端软件。 Viega和McGraw在“构建安全软件:如何正确避免安全问题”中引用了一句好话。

  

人们通常隐藏客户代码中的秘密,假设这些秘密   会安全的。将秘密放在客户端代码中的问题是   有才华的最终用户将能够滥用客户端并窃取所有客户端   秘密。你不应该做出需要保持真实的假设   应该不愿意扩大信任。服务器应该设计为不   信任客户端,反之亦然,因为客户端和服务器都得到了   黑客攻击。不愿信任可能有助于划分区域。

解决方案

您无法信任客户端软件。但您有时可以信任个人用户。你可以删除垃圾邮件。需要考虑的事项:

  1. 使用spam classifier检测垃圾内容。这需要一些时间。
  2. 您可以对来自单个IP地址的POST进行速率限制
  3. 您可以要求用户登录您的应用以撰写反馈。然后是来自特定帐户的速率限制反馈。
  4. 更好的是,您可以要求人们首先使用Google+或Facebook的服务器进行身份验证(即,您的应用请求用户authenticate their Google credentials。这对他们来说应该是非常轻松的,因为95%的Android用户拥有Google凭据。)发布之前。然后对每个帐户进行限价。大多数机器人无法访问许多/任何假的Facebook / Google +帐户,因为您必须中断captchas才能注册。这应该让机器人很难发布。
  5. 大型公司使用4,3和1的组合.Google Play商店曾用于尝试检测所有垃圾评论并将其删除。但现在他们也使用#4。您无法在不登录的情况下在Google Play商店发布评论!

    编辑:这可能也很有用http://android-developers.blogspot.ca/2013/01/verifying-back-end-calls-from-android.html?m=1