如何为每个用户设置用户生成内容量的限制

时间:2012-09-03 15:55:50

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

在讨论板,图片托管等应用程序中为用户实施限制的最佳方法是什么?

假设我们要为StackOverflow设置限制。匿名用户应该能够每12小时发布50个问题,并且每12小时发布1​​00个注册用户。

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

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

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

4 个答案:

答案 0 :(得分:1)

我可以写这个主题好几个月了。这是一个超级难题,单个银弹无法解决......如果这对你来说是一个真正的问题,那么当你向前迈进时,你会一遍又一遍地解决它。

如果在您的网站上放置大量内容是有价值的,那么随着您的扩展,坏人会发现这一点并绕过您的防御。你需要看看他们在做什么,适应和攻击不同的问题。这就是GMail垃圾邮件团队仍然存在的原因。 :)那个团队的深口袋,聪明的女孩/伙伴们。如果它是“可解决的”,他们现在就可以解决它了。

做上面描述的事情是一个很好的开始。我也会投资仪器仪表和将数据推送到一个平台,您可以在事后对其进行分析(例如:Hadoop集群)。通过这种方式,您可以研究实时站点流量,看看您是否遇到问题,如果有问题,请了解他们是如何做到的,这样您就可以适应。

欢迎来到加利福尼亚酒店...您可以随时查看,但您永远不能离开。

答案 1 :(得分:0)

大多数系统使用基于IP的非经过身份验证的用户和经过身份验证的用户的每个帐户。如果人们要注册多个帐户以规避您的安全性,那么您可以使用验证码删除机器人和/或新帐户的冷却期,然后才允许发布或甚至使用基于IP的帐户,直到该帐户至少为止24小时。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

这不能解决100%的问题,也可能带来其他问题。

匿名用户不应使用完全匿名用户和注册用户并检查IP,而是每次发布时都应提供可用的电子邮件作为验证和临时标识符(不会公开显示)问题

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

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

好的,有些人可能会使用10个不同的电子邮件帐户并向您发送垃圾邮件,甚至可能会让一些人感到害怕。