在加密方面,我是一个彻头彻尾的noobie,我觉得我的问题都错了,让我解释一下:
我希望Android应用程序与服务器联系以获取要在应用中显示的项目。然后,如果用户与此项交互,我想向服务器发送反馈,告知已单击哪个项目以将其保存在数据库中。
首先,我不希望任何人在将这些“反馈”发送到服务器时通过网络“拦截”此“反馈”。所以我决定使用https连接。但是,假设我要求反馈的脚本是https://mydomain.com/myscript.php(带有POST请求)。我不希望有人对我的Android代码进行反向工程,并且看到我正在调用此脚本发送反馈,因为他可以将它用于同一目的。
然后我想“嘿,当我必须向服务器发送反馈时,我们只需从服务器抓取一个密钥将其发回”。但同样,要获得此密钥,我需要调用一个PHP脚本,如果有人可以调用此脚本,获取密钥,他就可以根据需要发送反馈。
在我看来,这种情况没有尽头。而且我知道有一个:D我认为我正在以完全错误的方式看待这个问题。你有一些指导方针吗?
谢谢!
答案 0 :(得分:4)
您无法将信任扩展到客户端软件。 Viega和McGraw在“构建安全软件:如何正确避免安全问题”中引用了一句好话。
人们通常隐藏客户代码中的秘密,假设这些秘密 会安全的。将秘密放在客户端代码中的问题是 有才华的最终用户将能够滥用客户端并窃取所有客户端 秘密。你不应该做出需要保持真实的假设 应该不愿意扩大信任。服务器应该设计为不 信任客户端,反之亦然,因为客户端和服务器都得到了 黑客攻击。不愿信任可能有助于划分区域。
您无法信任客户端软件。但您有时可以信任个人用户。你可以删除垃圾邮件。需要考虑的事项:
大型公司使用4,3和1的组合.Google Play商店曾用于尝试检测所有垃圾评论并将其删除。但现在他们也使用#4。您无法在不登录的情况下在Google Play商店发布评论!
编辑:这可能也很有用http://android-developers.blogspot.ca/2013/01/verifying-back-end-calls-from-android.html?m=1