代码之家  ›  专栏  ›  技术社区  ›  Daniel Cook

我的联系人表单的垃圾邮件预防

  •  3
  • Daniel Cook  · 技术社区  · 11 年前

    我已经做了很多关于垃圾邮件预防方法的研究,我不想使用CAPTCHA。

    表单通常会向用户和网站管理员发送带有表单内容的电子邮件。

    我所做的第一件事是删除发送给用户的电子邮件中的表单内容,只需发送一条确认消息。

    我已经为人员的“title”添加了一行,并使用CSS隐藏了该行(如果填写了该字段)。提交完成时不发送任何电子邮件。

    我想添加一些其他技术,
    检查完成提交的时间-如果超过5秒,请不要发送电子邮件。
    通过唯一ID-如果不匹配,则不要发送电子邮件

    问题是网站页面是缓存的,所以直接设置会话变量是没有用的。我正在考虑使用ajax来点击CFC并设置变量,但这需要JavaScript。

    我是否应该将提交限制为仅启用JavaScript的提交?或者有其他建议吗?

    谢谢

    2 回复  |  直到 11 年前
        1
  •  3
  •   bwhet    11 年前

    丹尼尔,

    我有一种类似的垃圾邮件检测方法,自去年以来一直在使用。我可以分享我所看到的。

    基于会话的测试: 检查某人填写表格所需的时间,并检查用户是否来自正确的页面,这些都是非常可靠的检查,尽管有些困难。在您的情况下,强制用户使用现代的、支持javascript的浏览器可能是您的最佳选择。我想,这似乎正在成为一种更被接受的做法,对吧?我真的不知道。。

    基于内容的测试: 另外两种非常有用的做法是检查表单字段是否包含不同的值,以及输入的URL是否不超过指定数量。垃圾邮件发送者似乎总是在每个字段中粘贴相同的垃圾URL。然而,这些检查远不如基于会话的检查好。

    除了上述检查之外,我们的垃圾邮件检测启发式方法还有一些其他检查:

    • 基本正则表达式注入测试 -赤裸裸的,但如果你感兴趣,我可以分享
    • 垃圾邮件内容 -非常无用——一个主要由手工建造的简单图书馆
    • 被禁止的IP地址 -也很没用。。

    在过去一年左右的时间里,我们的启发式算法给出了一些数字。 失败测试总数=83356

    • 失败的注入测试=54(0未通过此测试,没有其他测试)
    • 输入测试中失败的URL太多=18935(2396)
    • 垃圾邮件内容测试失败=3673(46)
    • 隐藏场篡改测试失败=60295(1479)
    • 失败的Dubius时间消逝测试=64430(17126)
    • 失败无效会话测试=28706(140)
    • 失败字段包含相同值测试=167(49)
    • 失败的禁止IP地址(未实现)=0(0)

    我不想发布太多关于我们标准的细节,但如果你感兴趣,我很乐意分享代码。

    -本

        2
  •  1
  •   Richard Herbert    11 年前

    我建议你看看 http://cfformprotect.riaforge.org/ 因为它对我很有效。