题
您知道哪些机制可以防止您的网站被匿名垃圾邮件发送者滥用。
例如,假设我有一个网站,人们可以在其中投票。但是我 不 希望有人向顶部发送垃圾邮件。所以我发现(a)创建一个帐户并只允许投票一次,(b)验证码以减少垃圾邮件。您还知道哪些其他方法以及它们的效果如何?
解决方案
我注意到的一件大事是,无论你做什么,你都希望你的系统是独一无二的。您希望攻击者必须为您的特定站点定制他们的自动化程序,而不是仅仅向其扔一个几乎可以在任何地方运行的预先存在的脚本。它甚至不必是加密安全的;它只需要让您的网站与正常网站有所不同即可。
这并不意味着您不能或不应该使用预构建的验证码小部件之类的东西。绝对要使用其中之一作为起点!这只是意味着您必须在某个地方对其进行自定义,以便发生超出正常范围的额外事情,并且会破坏任何通常可以击败它的现有脚本。
如果您的网站变得足够大,以至于有攻击者专门针对它,那么您简单的小定制可能不再有效,您可能会做一些更特别的事情并考虑真正的密码学等等。但这是“好”问题之一。
其他提示
从 西克CD
从 量子随机比特生成器服务, , 通过 尼龙
- 限制每个IP地址每次的投票数
- 阻止匿名代理。
- 投票:如何在“每个会话的基础上”对表单必须返回的值进行混洗?“1”表示第一项,“2”表示第二项。那么“77”表示第一项,“812”表示第二项,...幕后可能是一些简单的数学运算,但它可以防止用户一遍又一遍地发送相同的 HTTP 查询。
- 什么对我非常有效:使用 AJAX 表单,而不是简单的 HTTP 表单。从技术上来说,造假选票并不复杂,但我编写了一个简单的博客软件,它唯一的垃圾邮件保护机制是通过 AJAX 提交评论 - 到目前为止没有垃圾邮件。
我是“隐藏字段”验证码的粉丝。我不记得在哪里读到过,但想法是这样的:
- 正常创建您的表单
- 添加一个额外的字段但隐藏它(即
style="display:none"
在周围的 div 或表格行上) - 提交后,如果该字段为空,请执行适当的操作(例如发送电子邮件);如果该字段已填写,则为机器人提交者
唯一出现这种情况的情况是用户的浏览器不处理 CSS(或者将其关闭),这种情况非常罕见。
收取选票费用,就像他们在一些电视“选秀”节目中所做的那样,然后一路收到垃圾邮件到银行!
说真的,这是一个非常棘手的问题,有一天(也许很快,如果你听雷·库兹韦尔的话),计算机将进行测试以筛选人类。我添加到列表中的答案有明显的缺点,但只是为了枚举:审核(让人进行测试)和基于 IP 的跟踪(限制主机的投票数量)。
stackoverflow 有一些功能可以帮助实现这一点;我认为您可以采取的最有用的步骤是禁用匿名用户和新帐户投票的能力。这样,任何人都无法注册数百个帐户并利用自己的一票来压倒其他用户。我想说,在一段时间内要求一些职位或会员资格都是不错的选择。
有人会说您可以允许每个 IP 地址投一票来帮助解决这个问题,但我玩过很多游戏,其中拥有几乎无限数量代理的恶意用户违反了基于 IP 地址的安全性。这是一种威慑,但精明的用户会轻松绕过它。
这是研究领域 人类计算.
这里有一段来自 Luis von Ahn 的精彩视频:http://video.google.com/videoplay?docid=-8246463980976635143
答案中有一些想法 最好的非基于图像的验证码? 如果您还没有看过,请提问。
我通常使用两者的组合:匿名用户可以自由浏览所有内容,但如果他想投票,则必须注册。
在注册过程中,根据情况,我使用选择通过邮件(以完成注册并确认至少邮箱存在)和/或验证码。
从那时起,您可以决定用户是否可以多次投票,或任何其他规则。
顺便说一句,我不喜欢基于 IP 的限制:在很多情况下,大型组织的网络为其所有用户使用很少的 IP,因此阻止可以投票的用户的风险很高。