【问题标题】:Best practice - blocking confirmation-by-mail abuse最佳实践 - 阻止滥用邮件确认
【发布时间】:2013-09-22 10:41:26
【问题描述】:

这是我第一次构建一个具有复杂登录\注册对话框的网站,该对话框具有后端安全功能,例如使用激活码进行电子邮件验证和禁止注册过多的错误登录尝试。

我以为我已经完成了安全架构的构建,但后来出现了问题:如何阻止恶意用户滥用我的新用户对话框。

我能想出的唯一解决方案是在成功注册时使用上次用于注册的电子邮件地址提交一个 cookie,后端会在新的注册尝试时识别此 cookie,并提示用户新的发现。甚至可能在响应之前需要超时。

但这只会让 12 岁的孩子无法忍受,这可能不会发生,但即使是具有基本技能和足够理由的人也可以使用简单的脚本暴力注册数千封电子邮件,我无法阻止用户拥有我网站上有很多帐户,因为他确实有电子邮件帐户(amirite?)

有什么建议吗?

【问题讨论】:

  • AFAIK,没有在线服务可以阻止这种情况的发生。
  • +1 好问题。希望更多的人会担心这种事情......
  • 您的用户是通过 html 表单还是 ajax 提交数据?
  • @andrew 我正在使用 Angulars $http.post 方法,我知道它是 ajax。文档说:“$http 服务是一个核心 Angular 服务,它通过浏览器的 XMLHttpRequest 对象或 JSONP 促进与远程 HTTP 服务器的通信。”
  • 这称为rate limiting。事实上,cookie 和(客户端)javascript 都不能保护您免受这种情况的影响。

标签: javascript authentication spam-prevention


【解决方案1】:

尝试集成验证码或用户必须做的事情,例如一个小数学。随机生成用户必须做的事情才能注册。通常这会惹恼大多数孩子,因为他们必须更改脚本。

验证码通常在公共网站注册页面上很常见...

还可以尝试将电子邮件与 IP 一起注册并记录在该帐户上登录的 IP 地址,并阻止该 IP 的新帐户。

【讨论】:

    【解决方案2】:

    您可以在注册时记录 IP 地址,如果您从同一 IP 地址获得大量用户,您可以阻止它。说垃圾邮件发送者可以欺骗他们的 IP。

    我会推荐:

    • CSRF
    • 验证电子邮件地址。
    • 记录所有 IP 并在必要时阻止任何 IP。
    • 如果验证码全部失败,它不会清除所有内容,但根据我的经验,它会造成很多损失。

    【讨论】:

      【解决方案3】:

      一种可能性是生成一个随机数服务器端并将其存储在会话变量中,该变量必须与数据一起返回,或者更好的是随机数的一些散列版本,例如。 MD5。这可以由服务器验证。

      这意味着您每次请求只能获得一次尝试,孩子们必须调整脚本以适应您的网站。您甚至可以限制每个会话生成数字的频率。

      【讨论】:

        猜你喜欢
        • 2022-01-18
        • 2012-06-27
        • 2016-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-07
        • 1970-01-01
        相关资源
        最近更新 更多