12

您知道哪些机制可以防止您的网站被匿名垃圾邮件发送者滥用。

例如,假设我有一个人们可以投票的网站。但我希望有人一直向顶部发送垃圾邮件。所以我发现(a)创建一个帐户,只允许投票一次,(b)验证码以减少垃圾邮件。您还知道哪些其他方法以及它们的效果如何?

4

11 回答 11

17

替代文字

来自xkcd

于 2008-09-03T16:35:54.247 回答
13

我注意到的一件大事是,无论你做什么,你都希望你的系统是独一无二的。您希望攻击者必须为您的特定站点量身定制他们的自动化程序,而不是仅仅向它扔一个几乎可以在任何地方工作的预先存在的脚本。它甚至不必是加密安全的;它只需要使您的网站与常规网站有所不同。

这并不意味着您不能或不应该使用诸如预先构建的验证码小部件之类的东西。绝对要使用其中之一作为凝视点!这只是意味着您必须在某个地方对其进行自定义,以便发生超出规范的额外事情,并且会破坏通常可以击败它的任何预先存在的脚本。

如果您的网站变得足够大,以至于您有攻击者专门针对它,那么您的简单小定制可能不再适用,您可能需要做一些更特别的事情并考虑真正的密码学等等。但这是一个“好”的问题。

于 2008-09-03T16:41:08.697 回答
9

对于 CAPTCHA 系统,我衷心推荐reCAPTCHA

通过开发足够智能的系统,传统的计算机生成的验证码最终将被打破。例如,有人声称以 30% 的命中率破解了以前被认为是牢不可破的 Google 验证码。根据定义,reCAPTCHA 仅向您显示光学字符识别无法识别的图像。

同时,您的用户的努力将指向共同利益——他们通过识别无法自动识别的单词来帮助数字化书籍。

请参阅此处以获取更多说明并尝试一下。

于 2008-09-03T19:51:24.510 回答
6

验证码

来自Quantum Random Bit Generator Service,通过MNeylon

于 2008-09-03T19:08:25.207 回答
4
  • 每次限制每个 IP 地址的投票数
  • 阻止匿名代理。
  • 投票:如何在“每个会话的基础上”对表单必须返回的值进行洗牌。一旦“1”表示第一项,“2”表示第二项。然后“77”表示第一项,“812”表示第二项,......可能是幕后的一些简单数学运算,但它可以防止用户一遍又一遍地发送相同的 HTTP 查询。
  • 什么对我很有效:使用 AJAX 表单,而不是简单的 HTTP 表单。从技术上讲,假选票并不复杂,但我写了一个简单的博客软件,它唯一的垃圾邮件保护机制是通过 AJAX 提交评论 - 到目前为止还没有垃圾邮件。
于 2008-09-03T16:42:17.680 回答
4

我是“隐藏领域”验证码的粉丝。我不记得我在哪里读到它,但想法是这样的:

  • 像往常一样创建表单
  • 添加一个额外的字段但隐藏它(即style="display:none"在周围的 div 或表格行上)
  • 提交后,如果该字段为空白,请执行适当的操作(例如发送电子邮件);如果该字段已填写,则为机器人提交者

唯一失败的情况是用户的浏览器不处理 CSS(或者他们将其关闭),这种情况非常罕见。

于 2009-05-21T23:13:37.893 回答
2

收取选票,就像他们在一些电视“才艺”节目中所做的那样,然后一路向银行发送垃圾邮件!

说真的,这是一个非常棘手的问题,总有一天(也许很快,如果你听 Ray Kurzweil 的话),计算机将进行测试以筛选出人类。我添加到列表中的答案有明显的缺点,但只是为了列举:适度(让人类进行测试)和基于 IP 的跟踪(限制来自主机的投票数量)。

于 2008-09-03T16:42:02.050 回答
0

stackoverflow 有一些功能可以帮助解决这个问题;我认为您可以采取的最有用的一个步骤是禁用匿名用户和新帐户的投票能力。这样,没有人可以注册数百个帐户并使用他们的一票来压倒其他用户。我会说在一段时间内要求一些职位或会员资格都是不错的选择。

有人会说你可以允许每个 IP 地址投一票来帮助解决这个问题,但我玩过很多游戏,其中拥有近乎无限数量的代理的恶意用户违反了基于 IP 地址的安全性。这是一种威慑,但精明的用户会很容易地绕过它。

于 2008-09-03T16:38:27.160 回答
0

这是人类计算的研究领域。

这里有 Luis von Ahn 的精彩视频:http: //video.google.com/videoplay ?docid=-8246463980976635143

于 2008-09-03T16:41:20.693 回答
0

在最佳非基于图像的验证码的答案中有一些想法?问你是否还没有看过。

于 2008-09-03T16:41:43.483 回答
0

我通常将两者结合使用:匿名用户可以自由浏览所有内容,但如果他想投票,则必须注册。

在注册过程中,根据情况,我使用 optin thru mail(完成注册并确认至少邮箱存在)和/或验证码。

从那时起,您可以决定用户是否可以多次投票,或任何其他规则。

顺便说一句,我不喜欢基于 IP 的限制:在很多情况下,大型组织的网络对其所有用户使用的 IP 很少,因此阻止可以投票的用户的风险很高。

于 2008-09-03T16:42:19.130 回答