ruby-on-rails - 防止市场应用程序欺诈的最佳方法?

标签 ruby-on-rails aggregation marketplace fraud-prevention

我正在开发一个市场网站,导师和学生可以在其中找到彼此。我正在构建一个在线支付系统(很像 elance 或 guru.com),导师可以在其中获得报酬,我们也可以从中提成。

几个问题:

  1. 阻止来自尼日利亚等某些国家/地区的 IP 地址的最佳方法是什么? (请注意,我正在使用 Ruby on Rails,因此任何特定于此的建议会更好,但如果不是也没关系。)

  2. 除了阻止某些 IP 之外,我还可以使用哪些其他技术? (我已经在进行 AVS 和正常网关检查)。

  3. 我需要检查哪些常见诈骗?

例如,我能想到的是有人使用该系统为自己付款,他们收到资金作为付款(减去​​我们的费用),然后对信用卡进行退款。

我想这些与 Paypal 或 Google Checkout(有些人称之为聚合网站)等网站所面临的问题类似,因为它们只收取一小部分费用 - 因此,如果原始资金来源丢失,那将是巨大的损失(很多时候)涉及利润的倍数,与正常的高利润产品不同)。

一些附加说明:

  1. 我的用户帐户已经需要电子邮件验证 - 这是最低要求,我正在寻找除此之外的功能
  2. 直接存款有 3-5 天的等待期 - 这是银行要求的 - 但仍然没有回答如何在这 3-5 天内确定是否是欺诈的问题,以便可以被取消
  3. 我希望避免采用对好人与坏人一起惩罚的解决方案 - 例如收费注册或让他们将资金留在账户中直到提出提款要求(例如 Paypal)

最佳答案

这是我到目前为止所做的,如果人们有更多建议,请回复:

  1. 设置“欺诈审核”标志,如果设置,则需要某人(我)在直接存款资金发送之前手动查看
  2. 如果汇款金额 > 300 美元,则自动进行欺诈审核
  3. 如果导师和学生请求的IP地址相同,则进行欺诈审核
  4. 检查他们的姓名和地址,看看他们是否“基本匹配” - 即他们的名字可能都是“John”,因此存在一个阈值,即有多少“匹配”构成了标记为欺诈审核的理由

该函数看起来有点像这样(注意这不包括检查 IP 地址的代码)

  def fraud_review invoice
    return true if invoice.total > 300

    #try to find out if they are the same person!
    client = invoice.client
    tutor = invoice.tutor

    count = 0
    client.full_name.split.each do |piece|
      count += 1 if tutor.full_name.include? piece
    end
    client.name_on_card.split.each do |piece|
      count += 1 if tutor.full_name.include? piece
    end
    client.street.split.each do |piece|
      count += 1 if tutor.street.include? piece
    end

    return true if count > 2
    false
  end

关于ruby-on-rails - 防止市场应用程序欺诈的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/716423/

相关文章:

windows-phone-7 - WP7 "rate and review"的链接是什么?

ruby-on-rails - Rails - 强参数 - 嵌套对象

ruby-on-rails - 由于 ruby​​racer 依赖性,Rails Twitter Bootstrap gem bundle 安装失败?

filter - ElasticSearch - 过滤嵌套聚合

mongodb - 如何在不使用 $facet 的情况下组合两个 MongoDB 聚合管道查询的结果并对组合结果执行另一个聚合查询?

ruby-on-rails - Rails 市场支付处理

php - 我需要在 SQL 中进行左联接、自然联接还是简单联接?

ruby-on-rails - Rails accepts_nested_attributes_for child 在验证时没有设置父级

ruby-on-rails - RoR - Model.all,但没有 created_at 和 updated_at 字段

elasticsearch - 汇总作业使日期字段的最大聚合为 float 而不是日期