【问题标题】:Evercookie for rails用于导轨的 Evercookie
【发布时间】:2013-05-29 21:54:16
【问题描述】:

我正在寻找一种解决方案来检测在我的网站上创建许多帐户的作弊者。

我找到了永久跨浏览器 cookie:http://samy.pl/evercookie/ 但它是用 JS 编写的,我需要在 rails 控制器中使用一些东西。有没有像evercookie这样的gem或插件?

【问题讨论】:

  • 是什么样的网站?您可以进行用户验证,例如Facebook 登录。
  • 我想补充一点,这不是您问题的解决方案。如果您真的很偏执,验证码就是您要寻找的东西,但隐藏字段(默认为空,如果由自动脚本填充,则为假)可能对您来说就足够了。

标签: ruby-on-rails cookies


【解决方案1】:

有一次我正在为 Rails 搜索 Evercookie 解决方案,但没有找到并写了一个 gem 'evercookie'。你可以try it。 文档可在 github

上获得

【讨论】:

    【解决方案2】:

    电子邮件令牌(设计、巫术)

    您可以向新用户发送电子邮件吗?

    许多网站使用的一个简单解决方案是向用户发送带有安全令牌的电子邮件。一个很好的 Rails gem 是 Devise,另一个是 Sorcery,它可以让您轻松构建自己的自定义身份验证。

    第三方登录(OmniAuth、OpenId、Facebook Connect、Twitter 等)

    您可以使用第三方服务对用户进行身份验证吗?

    OmniAuth gem 可以连接到许多第三方服务,并允许用户使用 Google、Yahoo、Facebook、Twitter、LinkedIn 上的现有帐户以及包括 LDAP 和 Shibboleth 在内的开放服务进行身份验证。

    OpenId gem 与 Google、Yahoo 和许多其他大型提供商配合得很好;您还可以在 OmniAuth 中使用 OpenId。

    在所有这些情况下,您都会跟踪发送情况,这样用户就不会使用相同的电话号码、邮政地址、信用卡等过快地再次申请。

    电话消息 (Twilio)

    您可以向您的用户发送短信吗?

    Twilio gem 可以向电话号码发送短信。这个概念是你的 应用程序向他们发送带有验证码的短信。

    蜗牛邮件(邮寄方式)

    postalmethods gem 可让您在邮政邮件中发送真实的实物明信片。您可以发送带有验证码的明信片。这可能需要几天时间,因此一些网站将其与新用户的“试用期”结合使用,在这种情况下,他们在某种程度上被沙盒化,不会造成任何麻烦。 (例如,他们可以阅读信息,但不能发布信息)。

    信用卡(BrainTree)

    相关的想法是让用户向您发送需要信用卡的东西,例如使用 BrainTree 或 ActiveMerchant 等支付网关。

    您无需向其收取任何费用即可验证该卡已打开且有效。或者您可以要求最低限度的付款,例如要求用户通过 PayPal、Google Payments、Amazon Dev Pay 等向您发送一美元。

    信用卡号码具有内部结构(如校验和),因此您可以验证该号码的格式和校验和是否正确。一个简单的脚本是flame.org

    图像验证码(recaptcha)

    为了阻止机器人,Ruby recaptcha 等验证码非常有效。

    Ruby 有其他验证码解决方案,其中任何一个都可以。

    因果报应(hypothes.is)

    这不是一个宝石,而是一个概念。授予新用户有限的权限,例如只读访问权限。让用户通过成为会员一段时间、贡献内容或与您网站内的朋友和同行联系等方式获得新的特权。

    这就是 StackOverflow 等网站的工作方式,在 http://hypothes.is 上有很多关于这些方法的好信息

    组合

    最强大的方法是这些技术的组合。

    也许给一个新用户一些基本的能力,比如阅读信息,然后让他通过上面的一个或多个身份验证来获得新的能力。这就是 Google 和 Facebook 添加一些功能的方式:您可以轻松注册,然后验证其他电子邮件,然后验证您的电话号码,然后验证您的邮政地址。

    【讨论】:

    • 我已经用过了。如果有人被禁止,他只需创建另一个帐户。他们是用户,而不是机器人。
    【解决方案3】:

    不,没有 Rail drop-in 解决方案,它没有多大意义。

    evercookie 是用 JavaScript 编写的,另外使用 SWF (Flash) 对象作为本地共享对象,并使用 PHP 来在服务器端生成缓存的 PNG 和 ETag。

    几乎所有的 Evercookie 技术都依赖于浏览器的特殊 Javascript API,因此无法将它们移植到服务器端技术(除了小的 PHP 部分)。

    gem 可能使集成和更新更容易,但它仍然是客户端的 Javascript。

    请考虑 Evercookie 的道德影响。在我看来,它是一种概念证明,而不是一种广泛使用的工具。

    【讨论】:

      【解决方案4】:

      如果您想推出自己的解决方案,一个很好的起点(使用 cookie)是:

      def create
        if cookies[:xyz]
          render :text => 'cheater!'
        else
          # save the user first (you may need to display the form again), and then set the cookie
          cookies[:xyz] = { :value => "1", :expires => 1.day.from_now }
         end
      end
      

      编辑:这无法与evercookie相比,只是一个简单的替代方案。

      编辑 2:我已经说过验证码是作者可能应该使用的,所以我是否因为展示如果他仍然想使用 cookie 的起点是什么而被否决?

      【讨论】:

      • 我知道简单的cookies,但用户可以删除它或更改浏览器。
      • 想骗系统的用户总会有办法的。使用验证码。
      • 不要尝试推出自己的安全解决方案。使用验证码。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-15
      相关资源
      最近更新 更多