什么是保护我的应用程序免受恶意注册的更好做法 - 验证或确认用户电子邮件?

时间:2010-12-30 16:04:38

标签: ruby-on-rails ruby security

我正在使用Authlogic创建一个Ruby on Rails(2.3.9)应用程序,我建立了一个用户可以跟踪训练的应用程序。随着它越来越受欢迎,我担心虚假/恶意注册。这里的最佳实践是什么,或者每种方法的优缺点是什么。

我是否应该在成功访问我的应用程序之前要求用户确认他们的电子邮件?我应该只要求用户填写成功的Captcha吗?这两件事是相互排斥的还是应该一起使用?

只是围绕这个寻找一些一般的讨论,所以我更好地理解。

3 个答案:

答案 0 :(得分:4)

任何僵尸网络都可以设置自己的邮件服务器来向你发送垃圾邮件......

有几个人也可以通过验证码......

使用电子邮件确认,验证码和陷阱(隐藏字段人类不会填写)

肯定会有很多其他的(Bocking所有俄罗斯和中国的IP是最极端的IP之一)但是那些是目前使用最多的......

答案 1 :(得分:1)

根据我的经验,一些垃圾邮件机器人实际上根本不是机器人,而是来自三个世界国家的人们付钱坐在那里并出于各种原因填写各种表格。这意味着虽然电子邮件确认和验证码有帮助,但您仍然会收到一些垃圾邮件。

您还可以考虑其他一些事项:

  1. 如果该网站是社交网站,请实施一个标记系统,使该社区成为主持人。

  2. 默认情况下禁用所有用户,然后要求管理员批准或删除它们。

  3. 需要信用卡才能注册。

  4. 根据您的情况,其中一些可能会或可能不会起作用。我发现#3几乎可以消除所有垃圾邮件,但它也可能会阻止真正的潜在客户。

答案 2 :(得分:0)

良好的安全性有多个层次。当尝试升级特权/访问被阻止页面时,我至少会同时使用这两者并添加自动阻止和自动管理警报功能。编写代码使您可以轻松永久阻止某些IP等...如果您也想要(我希望能够阻止安全链接,因为它可以通过安全API调用由其他服务调用)。

你应该在网页上出现的任何地方混淆电子邮件(在我看来,这会有所帮助;但不像过去那样多):

def obfuscate_email(email)
return nil if email.nil? #Don't bother if the parameter is nil.
lower = ('a'..'z').to_a
upper = ('A'..'Z').to_a
email.split('').map { |char|
    output = lower.index(char) + 97 if lower.include?(char)
    output = upper.index(char) + 65 if upper.include?(char)
    output ? "&##{output};" : (char == '@' ? '@' : char)
}.join
end