【发布时间】:2012-10-08 22:30:54
【问题描述】:
我有一个应用程序,用户可以在其中添加评分,我不希望他们必须注册才能做到这一点,但我也不希望机器人很容易玩弄评分。
有没有一种方法可以让我合理地(不一定是 100%,但我不想使用反应式启发式方法)确保我的用户是人类? 不需要任何类型的验证码/登录/其他操作。通常我会说这是不可能的,但由于我的应用程序在 Android 上运行,我认为我们可以做得比没有好。
Gmail 地址。
我的第一个想法是从AccountManager 获取他们的 gmail 地址,但我看不到验证他们是否拥有该电子邮件地址的方法 - 即机器人只能将虚构的电子邮件发送到我的服务器,所以我不认为这行得通(而且我不想让他们使用他们的谷歌帐户验证我的应用程序;他们不太可能这样做)。
GCM
我的下一个想法是使用 Google 的 Cloud Messaging。我可以从设备获取云消息 ID,将其发送到我的服务器,将随机云消息从服务器发送回设备,然后将该消息发送回服务器。我认为这至少验证了他们确实拥有带有 gmail 帐户的 Android 设备,这已经足够了。
短信
当然,我可以给他们发短信,但这需要花钱,而且要保持无缝意味着我需要获得阅读他们消息的权限,而我真的很想避免这种情况(尤其是评级是一项可选功能) .
Android 许可服务器
也许可以使用Licensing Verification Library 获得 Google 的签名保证,即用户从市场上下载了它,但由于我的应用程序的性质,我无法将其投放市场。
设备ID、EMEI、电话号码等
我当然不能使用这些。机器人可以编造它们!
所以 GCM 看起来是最好的(也是唯一的)选择。谁能想到别的?
【问题讨论】:
-
在你的apk中放一个私钥,从你的服务器下载一个随机文本,加密后发回,你就会知道它来自你的apk。你的 GCM 虽然可能也可以工作
-
如果机器人可以从反编译的 APK 中获取私钥,也是一样的。
-
啊,我喜欢私钥的想法。显然,只要付出足够的努力就可以破解它,但我可以让它变得困难。
-
我想这可能是答案!不过它才刚刚发布:android-developers.blogspot.co.uk/2013/01/…
标签: android captcha bots spam google-cloud-messaging