php - 智能识别不同账户为同一用户

标签 php android ios authentication paypal

为了在此处提供上下文,示例场景是一个向用户付款(使用 Paypal)以执行某些任务的应用程序(iPhone、Android)。它目前在假设每个用户都表现良好并拥有一个帐户的情况下运行。

更新 - 阐明这些任务的工作原理。每个用户只能执行一次任务,但任务可以由多个用户执行。这就是为什么我需要确保用户确实只执行一次任务。

示例任务

Your testing product will arrive in the mail shortly. Please use it for a week and then supply your feedback. Upon completion of your feedback, we will give you $2.50.


当用户创建多个帐户,然后尝试在这些多个帐户上付款以快速赚取大量资金时,就会出现此问题。因此,您会发现此应用需要某种方式来检测用户是否正在使用它。

目前我们的识别工具如下:

弱标识符 - 可能会发生变化并且很容易被伪造的东西。

  • 名字
  • 姓氏
  • IP 地址
  • 电子邮件

强标识符 - 更难更改或伪造的东西,但仍有可能这样做。

  • IMEI(仅限 Android)
  • Paypal 账户(只有在第一次付款后才有效,用户可以在重要之前大量付款)
  • 广告商编号
  • 唯一设备 ID
  • 推送通知 token (用于应用通知)

基于这些标识符,并且完全不知道用于将帐户与它们链接在一起的过程,我很好奇是否有人对进行此类匹配有建议。还知道这些东西中有许多可以由一个虔诚的人伪造。

对于邮件,有模糊匹配的方法,但是速度很慢。我已经有办法完成其中的一些工作,但在我进一步深入这个兔子洞之前,我需要其他人的最佳实践和经验。

我知道没有 100% 万无一失的方法来检测重复项,但我想做的就是标记可能的重复项以供审查,并赋予管理员审查帐户以及合并或禁用它们的权力。

更新 - Paypal Paypal 是一个很好的来源,但它只适用于非常特殊的情况。要检查经过验证的帐户并取回帐户 ID,您必须在用户提供的帐户中使用完全相同的名字和姓氏。这并非总是如此。 Jonathan 可以是 Jon,Christopher 可以是 Chris,等等。此外,多个电子邮件可以绑定(bind)到同一个帐户。因此,一对夫妇可能会合租,强制他们输入别人的名字以提交付款毫无意义。

至于支出返还,可以通过在多个账户上一次全部支出来避免。因此,在付款完成之前,没有什么可以检测到的。我不知道通过 Paypal 取消付款的好方法,所以如果有建议,我会洗耳恭听。

最佳答案

我想跟进此事,并提到虽然我没有得到这个特定项目的解决方案,但我确实得到了答案。

Bank accounts/credit cards (which translate to paypal accounts in this case) are probably your best bet at limiting multi-accounting. You will not cover 100% of the cases but its better than anything else. The second best are phone numbers. Other than that its a endless race between you and people who spoof device identifiers or reverse engineer your network protocol and bypass the app entirely. - @Vatev

只是为了解决这个问题,现实是无论您多么努力地尝试对设备进行指纹识别,都有办法绕过它。唯一可靠的方法是对手机进行较低级别的访问,这是 Google 和 Apple 不提供的访问级别,唯一的替代方法是让您的应用因滥用服务而被拒绝。

关于php - 智能识别不同账户为同一用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31414582/

相关文章:

iphone - 使用图像数组在启动时添加动画

javascript - 访问 Angular 生成的内容时,evaluateJavaScript() 无法获取稳定的内容?

php - 使用 PHP 检查变量是否为有效日期

android - onBackPressed 仅关闭 ProgressDialog

ios - 如何从另一个变量<[团队]>观察变量<[游戏]>?

android - 如何在两个 Android 应用程序(如 Facebook 应用程序和 Facebook Messenger)之间共享登录数据

android - 在没有 fcm 、 pusher 的情况下创建我自己的推送通知服务,

javascript - 将格式输入类型 ='date' 从 mm-dd-yyyy 更改为 dd-mm-yyyy Laravel

javascript - 如何在不刷新页面的情况下通过ajax发布URL参数更改

php - php中的mysql查询未读取php变量