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

Android客户端和PHP服务器之间的加密,android,encryption,https,Android,Encryption,Https,说到加密,我完全是个傻瓜,我想我把我的问题看错了,让我解释一下: 我希望Android应用程序与服务器联系,以获取要在应用程序中显示的项目。然后,如果用户与此项交互,我希望向服务器发送反馈,告知已单击哪个项以将其保存到数据库中 首先,我不希望任何人在将这些“反馈”发送到服务器时通过网络“截获”这些“反馈”。所以我决定使用https连接。但假设我要求反馈的脚本是(带有POST请求)。我不希望有人对我的Android代码进行反向工程,然后看到我调用这个脚本是为了发送反馈,因为这样他就可以将它用于同样

说到加密,我完全是个傻瓜,我想我把我的问题看错了,让我解释一下:

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

首先,我不希望任何人在将这些“反馈”发送到服务器时通过网络“截获”这些“反馈”。所以我决定使用https连接。但假设我要求反馈的脚本是(带有POST请求)。我不希望有人对我的Android代码进行反向工程,然后看到我调用这个脚本是为了发送反馈,因为这样他就可以将它用于同样的目的

于是我想,“嘿,我们从服务器上抓取一把钥匙,当我必须向服务器发送反馈时,把它发送回去。”。但是,为了得到这个键,我需要调用一个php脚本,如果有人可以调用这个脚本,得到这个键,他可以根据自己的需要发送反馈

在我看来,这一切似乎没有尽头。我知道有一个问题:我想我完全错了。您是否有一些指导方针可以遵循

谢谢

不要相信客户 您不能将信任扩展到客户端软件。Viega和McGraw在“构建安全软件:如何以正确的方式避免安全问题”中引用了一句很好的话

人们通常在客户端代码中隐藏秘密,假设这些秘密 会安全的。在客户端代码中添加机密的问题是 有才华的最终用户将能够滥用客户机并窃取其所有信息 秘密。你不需要做出需要证实的假设,而是 应该不愿意扩大信任。服务器的设计不应 信任客户机,反之亦然,因为客户机和服务器都可以 砍。不愿信任有助于划分

解决办法 你不能信任客户端软件。但有时您可以信任单个用户。你可以删除垃圾邮件。需要考虑的事项:

  • 通过使用电子邮件检测垃圾邮件帖子。这需要一点时间
  • 您可以从单个IP地址对限制发布进行评级
  • 您可以要求用户登录到您的应用程序以编写反馈。然后对特定客户的反馈进行评级限制
  • 更好的是,你可以要求人们在发布之前先通过Google+或facebook的服务器(即,你的应用程序要求用户进行身份验证。这对他们来说应该是相当轻松的,因为95%的Android用户都有谷歌认证)。然后限制每个账户的利率。大多数机器人无法访问许多/任何伪造的facebook/Google+帐户,因为你必须破解才能注册。这将使机器人很难发布
  • 大公司使用4、3和1的组合。谷歌Play商店曾尝试检测所有垃圾邮件评论并将其删除。但现在他们也使用了#4。你不能在没有登录的情况下在Google Play商店上发布评论


    编辑:这可能也很有用

    从根本上说,让你的应用程序做一些事情,并阻止用户直接做是不可能的。我认为你太偏执了。我不明白为什么你需要使用HTTPS和大量的加密来实现这一点?所以本质上你关心的是你不想从用户那里得到无效的反馈?防止这种情况发生的唯一方法是采用某种形式的服务器端验证。没有什么是防弹的,但也许可以从跟踪哪些元素被提供给用户以提供反馈开始。这样一来,用户对最近未提供的元素的任何反馈都将被视为无效?也就是说,我同意Simon&SLaks的观点,你可能过于偏执。是的,Capn,这些反馈很重要,我希望它们是来自应用程序的实际反馈,而不是来自使用bot:D的人。但既然你们三个说我过于偏执,我将尝试在服务器端检测“虚假”反馈。只是我认为有一个合适的方法可以做到这一点,因为我在编程生涯中从来没有使用过任何安全性:D非常感谢@西蒙·安德烈·福斯伯格,我认为他一点也不过分偏执!弄清楚应用程序发出的post请求非常容易。对于一个小型的实验应用程序来说,这并不重要。但是,如果您正在为业务制作应用程序,这一点很重要。谢谢,我确实会尝试在服务器端实现一些智能,以检测可能的欺诈行为。可能还想看看这个:完美!!这就是我要找的!我会调查的。非常感谢:)