1

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

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

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

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

我将不得不限制每个 IP 的帐户数量(学校/其他有很多用户和单个 IP 的地方呢?)。

4

4 回答 4

1

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

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

Doing something like what you describe above is a great start. I would also invest in instrumentation & push the data off to a platform where you can analyze it after the fact (ex: a Hadoop cluster). This way you can study the livesite traffic to see if you have a problem and, if so, learn about how they are doing it so you can adapt.

Welcome to the Hotel California...where you can check out anytime you like but you can never leave.

于 2012-09-03T23:40:33.773 回答
0

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

于 2012-09-03T16:02:28.740 回答
0

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

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

于 2012-09-03T16:02:52.537 回答
0

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

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

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

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

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

于 2012-09-03T16:26:48.407 回答