【问题标题】:How to set limits for amount of user-generated content per user如何为每个用户设置用户生成内容的数量限制
【发布时间】:2012-09-04 07:40:33
【问题描述】:

在讨论板、图像托管等应用程序中实施用户限制的最佳方式是什么?

假设我们要为 StackOverflow 设置限制。匿名用户每 12 小时可以发布 50 个问题,注册用户每 12 小时可以发布 100 个问题。

我考虑过创建一个数据库并存储有关 IP/用户及其帖子的信息。数据将在 12 小时后被删除。

但是,这样的解决方案很容易被黑客入侵。单个 IP 不应产生超过 100 个问题,但如果一个用户在同一个 IP 上创建多个帐户怎么办?每个帐户都有自己的限制,因此用户可以提出无限量的问题。

我必须限制每个 IP 的帐户数量(学校/其他有很多用户和单个 IP 的地方怎么办?)。

【问题讨论】:

  • 如果您担心有人会发送垃圾邮件,您只需实施某种垃圾邮件机器人对策,例如验证码、电子邮件验证、蜜罐...
  • 一个用户可以通过 10 个验证码并创建 10 封电子邮件,而不是那么大的努力。

标签: php database security limit user-generated-content


【解决方案1】:

我可以在这个话题上写几个月。这是一个超级难的问题,没有一颗灵丹妙药就能解决……如果这对你来说是一个真正的问题,你会在前进的过程中一遍又一遍地解决它。

如果在您的网站上放置大量内容是有价值的,那么随着您的扩展,坏人会发现这一点并绕过您的防御。你需要看看他们在做什么,以不同的方式适应和解决问题。这就是 GMail 垃圾邮件小组仍然存在的原因。 :) 那支球队的财大气粗,聪明的女孩/伙计们。如果它是“可解决的”,他们现在应该已经解决了。

做你上面描述的事情是一个很好的开始。我还将投资仪器并将数据推送到一个平台,您可以在该平台上进行事后分析(例如:Hadoop 集群)。通过这种方式,您可以研究现场流量以查看您是否有问题,如果有问题,请了解他们是如何做到的,以便您进行调整。

欢迎来到加州酒店...您可以随时退房,但永远不能离开。

【讨论】:

    【解决方案2】:

    大多数系统对未经身份验证的用户使用基于 IP 的 IP,对经过身份验证的用户使用基于每个帐户的 IP。如果人们要注册多个帐户以规避您的安全性,那么您可以使用验证码来删除机器人和/或在新帐户被允许发布之前为新帐户设置一个冷静期,甚至可以使用基于 ip 的帐户,直到帐户至少24 小时前。

    【讨论】:

    • 那么,1 天帐户不再是威胁了吗?
    • 时间范围由您决定,但只要时间足够长,不会引起人们的注意。有很多方法可以限制帐户,直到他们证明自己是真实的,这完全取决于您正在实施的系统以及您可以真正将真正的用户与滥用者区分开来的方法。
    【解决方案3】:

    你已经回答了你的问题,如果我是你,我会做以下事情: 1.限制每个IP创建的帐户数量 2. 为过去 12 小时内创建的内容设置一个维护记录或计数器的数据库 3. 对于访客,虽然可能很棘手,但您可以使用 IP+cookies 来跟踪用户的活动,但是如果单个代理后面有很多用户,则可能会出现问题。为此,要么你必须牺牲你的规则,要么变得严格。

    当我使用代理时,我看过很多网站,他们说你已经访问过这个网站,但我从来没有。

    【讨论】:

    • 我无法限制每个 IP 的帐户数量。使用共享 IP、热点等的人怎么办?
    • @GuryMax NAT/PAT 后面的客户端具有相同的 IP 和不同的端口号,但不能用作相关数据,因为用户可以打开另一个浏览器或浏览器的另一个实例并获取另一个端口号 - 但它不会阻止具有相同IP的其他用户发布问题
    • 我已经提到,如果您限制每个 IP 的帐户,那么它将影响 NAT 和 PROXY 后面的人。
    【解决方案4】:

    这不会 100% 解决您的问题,并且可能会带来其他问题。

    不要使用完全匿名的用户和注册用户并检查 IP,匿名用户应在每次发布时出示有效的电子邮件作为验证和临时标识符(不会公开显示)问题。

    当他们发布问题时,它将与电子邮件一起保存,并且他们应该会在邮箱中收到问题激活链接

    如果他们点击电子邮件中的链接,问题将被激活并发布,因此电子邮件服务器作为临时标识符而不是客户端 IP。

    好吧,仍然有可能有些人可能会使用 10 个不同的电子邮件帐户并向您发送垃圾邮件,甚至可能会吓跑一些人。

    【讨论】:

    • 电子邮件激活不是一个选项。匿名必须是匿名的。简单快速。我的解决方案还带来了哪些其他问题?
    猜你喜欢
    • 2022-10-02
    • 2022-11-22
    • 1970-01-01
    • 2016-10-18
    • 2019-04-04
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多