我开发了一款应用程序,允许用户上传一些照片并在Facebook / Dropbox / Twitter等上分享。最近它在应用程序商店上线。
但是,我现在遇到了一个问题:机器人正在创建帐户并在我的服务器上上传许多照片。我暂时禁用了应用程序,但现在我正在寻找一种有效的方法来防止这个机器人这样做。
机器人的IP地址经常变化,因此无法阻止ip。他使用非常逼真的名称和电子邮件地址创建帐户,因此很难找出哪些用户是真实的,哪些是由机器人创建的。
我正在考虑使用验证码,但如果我实施此功能,我不确定我的应用是否会被Apple拒绝。我最好找一种方法,这样我就可以阻止他做他的工作,所以我不必再把这个应用程序重新发送给Apple了。
有人可以就我可能做的事给我一些建议吗?
谢谢!
答案 0 :(得分:1)
这就是我解决类似问题的方法:
我实现了一个令牌生成器,它为服务器的每一次数据传输生成一次性令牌,所以甚至一个用于登录数据,发送文件等。这个令牌是由一个秘密算法生成的,可以是验证服务器端,因为您知道如何生成一个。
使用一个令牌后,将其放入下一个X分钟/小时/天的临时列表中(取决于您的服务器可以处理多少数据传输)。当用户尝试使用已使用的令牌发送数据时(即令牌与“禁止”列表中的令牌匹配),您可以确定有人试图向您发送垃圾邮件 - >将该帐户标记为“垃圾邮件发送者”并确定您要执行的操作。
算法每次必须生成一个不同的标记(最好的方法是单向散列),但是你必须保证特定的“属性”,用它来证明它的真实性。
这是一个非常简单的例子:
您在客户端的算法生成的数字介于1000000000000000000000和99999999999999999999999之间,然后将此数字乘以12456564并增加20349。
服务器成为特定的命令和数据,以及生成的令牌。现在检查(number - 20349)%12456564
是否为0.如果为0,则可能是由“秘密”算法生成的。
这是一个非常基本的例子,但你明白了......