【问题标题】:Encryption between Android client and PHP serverAndroid客户端和PHP服务器之间的加密
【发布时间】:2013-02-01 16:29:06
【问题描述】:

在加密方面我完全是个菜鸟,我认为我的问题完全错了,让我解释一下:

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

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

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

在我看来,这似乎没有尽头。而且我知道有一个 :D 我认为我正在以完全错误的方式看待这个问题。您是否有一些指导方针可以遵循?

谢谢!

【问题讨论】:

  • 根本不可能让你的应用做某事而阻止用户直接做。
  • 我认为你过于偏执了。我不明白您为什么需要为此使用 HTTPS 和大量加密?
  • 所以本质上你的担心是你不想要用户的无效反馈?防止这种情况的唯一方法是采用某种形式的服务器端验证。没有什么是万无一失的,但也许可以从跟踪哪些元素提供给可以提供反馈的用户开始。这样,用户对最近未提供的元素的任何反馈都将被视为无效? 也就是说,我同意 Simon & SLaks 的观点,因为你可能过于偏执了。
  • 是的 TheCapn,这些反馈很重要,我希望它们是来自应用程序的实际反馈,而不是来自使用机器人的人 :D 但既然你们三个说我过于偏执,我将尝试在服务器端检测“假”反馈。只是我认为有一种适当的方法可以做到这一点,因为我在编程生活中绝对从未使用过任何安全性:D 非常感谢!
  • @simon-andre-forsberg,我不认为他过于偏执!弄清楚应用程序发出的帖子请求非常容易。对于一个小型实验应用程序来说,这无关紧要。但是,如果您将应用程序作为/用于企业,这一点很重要。

标签: android encryption https


【解决方案1】:

不要相信客户

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

人们通常在客户端代码中隐藏秘密,假设这些秘密 会很安全。将秘密放入客户端代码的问题在于 有才华的最终用户将能够滥用客户端并窃取其所有内容 秘密。而不是做出需要成立的假设,你 应该不愿扩大信任。服务器不应设计为 信任客户端,反之亦然,因为客户端和服务器都获得 被黑了。不愿信任有助于区分。

解决方案

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

  1. 使用spam classifier 检测垃圾邮件。这需要一些时间。
  2. 您可以对来自单个 IP 地址的 POST 进行速率限制
  3. 您可以要求用户登录您的应用程序才能撰写反馈。然后限制来自特定帐户的反馈。
  4. 更好的是,您可以要求人们首先使用 Google+ 或 facebook 的服务器进行身份验证(即,您的应用程序请求用户使用 authenticate their Google credentials。这对他们来说应该很轻松,因为 95% 的 Android 用户拥有 Google 凭据。)在发布之前。然后对每个帐户进行速率限制。大多数机器人无法访问许多/任何虚假的 facebook/Google+ 帐户,因为您必须打破 captchas 才能注册。这应该会让机器人很难发帖。

大公司使用 4、3 和 1 的组合。Google Play 商店曾经尝试检测所有垃圾评论并将其删除。但现在他们也使用#4。您无法在未登录的情况下在 Google Play 商店上发表评论!

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

【讨论】:

  • 谢谢,我确实会尝试在服务器端实现一些智能来检测可能的欺诈行为。
  • 可能还想看看这个:android-developers.blogspot.ca/2013/01/…
  • 完美!!这就是我想要的!我会调查的。非常感谢:)
猜你喜欢
  • 1970-01-01
  • 2011-02-10
  • 1970-01-01
  • 2020-09-02
  • 2014-07-12
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2021-11-17
相关资源
最近更新 更多