更好的蜜罐实施(形成反垃圾邮件)

2023-11-25

How do we get rid of these spambots on our site?

每个网站都会成为受害者spambots在某一点。您的处理方式会影响您的客户,并且大多数解决方案可能会阻止某些人填写您的表格。

这就是蜜罐技术的用武之地。它允许您忽略垃圾邮件机器人,而无需强迫您的用户填写验证码或跳过其他环节来填写您的表单。

这篇文章纯粹是为了帮助其他人在他们的网站表单上实现蜜罐陷阱。


Update:

自从在我客户的所有网站上实施以下蜜罐以来,我们已成功阻止99.5%(数以千计的提交)我们所有的垃圾邮件。这没有使用“高级”部分中提到的技术,该部分将很快实现。


Concept

通过在表单中​​添加一个只有垃圾邮件机器人才能看到的不可见字段,您可以欺骗他们,让他们知道自己是垃圾邮件机器人,而不是真正的最终用户。

HTML

<input type="checkbox" name="contact_me_by_fax_only" value="1" style="display:none !important" tabindex="-1" autocomplete="off">

这里我们有一个简单的复选框:

  • 用 CSS 隐藏。
  • 有一个不起眼但明显是假的名字。
  • 具有相当于 0 的默认值。
  • 无法自动填写
  • Can't be navigated to via the Tab key. (See tabindex)

服务器端

在服务器端,我们要检查该值是否存在并且是否具有非 0 的值,如果是,则进行适当的处​​理。这包括记录尝试和所有提交的字段。

在 PHP 中,它可能看起来像这样:

$honeypot = FALSE;
if (!empty($_REQUEST['contact_me_by_fax_only']) && (bool) $_REQUEST['contact_me_by_fax_only'] == TRUE) {
    $honeypot = TRUE;
    log_spambot($_REQUEST);
    # treat as spambot
} else {
    # process as normal
}

Fallback

这就是日志的用武之地。如果您的某个用户最终被标记为垃圾邮件,您的日志将帮助您恢复任何丢失的信息。它还允许您研究在您网站上运行的任何机器人,如果它们将来被修改以绕过您的蜜罐。

报告

许多服务允许您通过 API 或上传列表来报告已知的垃圾邮件机器人 IP。 (例如云耀光) 请报告您发现的所有垃圾邮件机器人和垃圾邮件 IP,帮助使互联网变得更安全。

Advanced

如果您确实需要打击更高级的垃圾邮件机器人,您还可以执行一些其他操作:

  • 纯粹用 JS 而不是纯 CSS 隐藏蜜罐字段
  • 使用您实际未使用的真实表单输入名称。 (例如“电话”或“网站”)
  • 在蜜罐算法中包含表单验证。 (大多数最终用户只会弄错 1 或 2 个字段;垃圾邮件机器人通常会弄错大部分字段)
  • 使用 CloudFlare 等自动阻止已知垃圾邮件 IP 的服务
  • 设置表单超时,并防止即时发布。 (页面加载 3 秒内提交的表单通常是垃圾邮件)
  • 防止任何 IP 每秒发布一次以上。
  • 欲了解更多想法,请看这里:如何创建“核”蜜罐来捕获垃圾邮件发送者
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更好的蜜罐实施(形成反垃圾邮件) 的相关文章

  • playframework 全局设置 @Required 字段的自定义消息

    我正在寻求有关翻译 Play 框架 2 2 中的验证消息的帮助 我有必填字段 FE Required message To pole jest wymagane public String miesiac Required public S
  • 将 javascript 变量作为 onsubmit href 链接传递到表单/输入字段

    id 喜欢有一个输入框 用户可以在其中输入搜索词 该搜索词可能会传递给一个 javascript 函数 然后该函数将一些 url 段与搜索词组合起来 创建一个完整的 url 到目前为止 它在没有表单的情况下工作正常 但我想向其中添加一个表单
  • asp.net 3.5 是否支持单个页面上的多个表单?

    我只是想确认这是否属实 我记得在某处读到现在这是可能的 但经过一个小时的谷歌搜索后我找不到任何明确的证据 在 ASP NET WebForms 中 您不能使用多个表单 因为它使用单个表单模型 在 ASP NET MVC 中您可以
  • (jQuery) 在 cookie 中单击时保存复选框状态

    关于此功能有很多主题 但我似乎无法让它工作 我在谷歌上搜索了这个具体案例 有一堆链接让我来到这里 但奇怪的是我似乎无法让它们工作 我所做的唯一工作如下 http dl dropbox com u 2238080 a old z htm ht
  • 使用哈希检查具有 $_POST 值的页面是否已刷新

    当将表单发布到同一个PHP页面时 正确的方法是什么来查找页面是否被意外刷新而不是再次提交 这是我现在正在使用的 tmp implode POST myHash md5 tmp if isset SESSION myHash SESSION
  • Symfony2 - ReferencedColumnName id 为空

    我要放弃食谱文章了表单集合 http symfony com doc current cookbook form form collections html但是 当尝试将其保留到数据库时 我收到约束冲突错误 引用的列名称 id 为空 SQL
  • 如何迭代视图的元素

    我有一个带有收音机 输入和按钮的视图 当我单击它时 我想检查所有输入是否包含信息 如何迭代活动中视图的元素并检查每个文本视图是否满足上述要求 谢谢 我在一些目前没有的代码中做了类似的事情 但从记忆中它应该是这样的 假设父视图 LinearL
  • 在 Spring MVC 中使用一系列项目处理表单发布

    我正在尝试将一些数据从客户端发送到服务器 并将其处理为文件下载 我使用简单的 HTML 表单 因为我想初始化文件下载 而不是 AJAX 其中一个表单字段是一组项目 另外两个是名称和描述字符串 在提交表单之前 我将此字段序列化为字符串 JSO
  • Django 表单验证消息未显示

    我试图限制可以以表单上传的文件类型 大小和扩展名 该功能似乎有效 但未显示验证错误消息 我意识到if file size gt 4 1024 1024可能不是最好的方法 但我稍后会处理这个问题 这是 forms py class Produ
  • PHP 5 的 HTML 表单库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个QuickForm替代品 QF 存在性能问题 例如组合框中的许多选项 我还想要一些更面向对象的东西 比如 Zend Form
  • Django:在表单中初始化小部件时获取当前网址

    当我初始化表单以在其中找到我想要检查的字符串时 我想获取当前的 url 根据这个字符串 我想更改放入单选小部件中的数据 我想根据 url 显示不同的 radioselect 选项 class FunctionForm forms Model
  • 如何使用 D3 (或只是 javascript)将表单选项设置为“选择”

    有没有一种方法可以搜索选择表单元素中的所有选项 并将具有匹配值的选项指定为 已选择 var xStat G var statOptions Points PTS Goals G Assists A Penalty Minutes PIM c
  • 在 Delphi XE 中将类作为过程的参数传递

    我需要做的是这样的 procedure A type of form var form TForm begin form type of form Create application form showmodal freeandnil f
  • JQuery 表单提交不发送帖子

    我在使用 JQuery 提交表单时遇到问题 当按下提交按钮时 表单会正确提交 但是当我尝试使用时 somebutton click function form myForm submit 我还尝试从 Chrome 控制台调用表单提交 表单未
  • 使用 PHP 将表单数据发送/发布到 URL [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有一个通过 POST 提交的表单 提交表单后我捕获变量 如何连接表单数据 然后将其 POST 到 url 然后重新定向到感谢页面 这不是确
  • html 文件上传的默认文件夹和文件名

    我正在使用 jQuery Ajax 插件将图像文件从本地计算机上传到网络服务器 该网页呈现一个标记为Upload Image File 用户按下按钮并从浏览器显示的弹出目录列表中选择要上传的文件 服务器上的 PHP 存储图像文件 一切正常
  • 将文本数据作为表单中的文件发布

    是否可以从 html 表单中发布一些作为文件输入类型的字符串的 XML 数据 情况是我有一个像这样的表格 form action target php method post enctype multipart form data gt
  • Rails simple_form:自定义输入id

    我想把用Rails simple form生成的几个表单放在一页上 并用javascript对它们进行操作 然而 simple form 为表单中的各个输入生成了相同的 id 因此我想用我自己的 id 替换生成的 id 现在我有一行 和 H
  • 一个表单包含两个提交按钮,每个按钮都有不同的操作

    我花了几个小时试图找到问题的解决方案 但似乎找不到正确的解决方案 提前感谢你的帮助 我有一个 html 表单
  • Delphi应用程序窗口z顺序和MainFormOnTaskBar属性

    我正在维护一个最初用 Delphi 7 编写并移植到 Delphi XE 的应用程序 使用 Windows 7 我们遇到了一些问题 例如模态窗口出现在主窗口下方 以及最终无法与程序交互 因为用户需要与模态窗体交互 而这是不可能的 因为它位于

随机推荐

  • $locationProvider.html5Mode(true) 问题

    一直在处理一些我陷入困境的 locationProvider 问题 我有一个简单的单页页面 但我收到以下错误 TypeError Cannot read property replace of undefined at trimEmptyH
  • Geopy:检索英文国家/地区名称

    我正在尝试反转地理编码坐标并使用 geopy 检索相应的国家 地区代码 然而 Geopy似乎没有提供获取国家代码的方法 因此 我尝试先检索国家 地区名称 然后将它们转换为代码 不幸的是 我的代码给了我非英语的国家 地区名称 如何获取英文国家
  • RxJS Observables 的 Promise.all 行为?

    在 Angular 1 x 中 我有时需要制作多个http请求并对所有响应执行某些操作 我会将所有的承诺放入一个数组中并调用Promise all promises then function results Angular 2 最佳实践似
  • 由于 rJava 导致尝试在 R 中加载包时出现问题

    当我打字时require xlsx 为了加载包xlsx在 R 中 显示以下消息 gt require xlsx Loading required package xlsx Loading required package xlsxjars
  • 将 Python argparse.Namespace() 视为字典的正确方法是什么?

    如果我想使用的结果argparse ArgumentParser 这是一个Namespace对象 具有需要字典或类似映射的对象的方法 请参阅集合 映射 正确的做法是什么 C gt python Python 2 7 3 default Ap
  • Typescript 索引签名和方法

    为什么下面的代码给出ts 2411 error class Greeter key string string number greeting string constructor message string this greeting
  • 如何删除ListBox中的多个选定项?

    我的 Windows 窗体包含两个列表框 Listbox1 包含一些项目 listbox2 为空 当我按下表单上的按钮时 应将 listbox1 中的多个选定项目从 Listbox1 中删除并复制到 Listbox2 中 我尝试在 list
  • JavaScript WeakMap 不断引用经过 gc 处理的对象

    我正在经历 JavaScript 弱映射 在 google chrome 开发者控制台中尝试此代码后 使用 js flags expose gc 运行 我不明白为什么弱映射继续引用 a b 如果 a 是GC 编辑 var a listene
  • Java中Arraylist转Json的方法

    我有一个数组列表 数组列表包含一堆域对象 如下图所示 Domain domainId 19 name a dnsName a com type 0 flags 0 Domain domainId 20 name b dnsName b co
  • 如何在客户端-服务器 PlayN 游戏中处理 RPC?

    我想使用 PlayN 创建客户端 服务器纸牌游戏 例如心 虽然我主要关注 HTML5 输出 但我希望与输出平台无关 以防我将来决定制作 Android 客户端 我应该如何处理RPC机制 这些是我想到的选项 通过 get post 方法将 J
  • Dynamodb:使用两个以上属性的查询

    在 Dynamodb 中 您需要在索引中指定可用于进行查询的属性 如何使用两个以上的属性进行查询 使用 boto 的示例 Table create users schema HashKey id defaults to STRING dat
  • 在 MKMapView 上移动/更新 MKOverlay

    有没有办法更新 即移动 aMKOverlay已经添加到MKMapView 删除旧的并添加新的非常糟糕 慢 即我想当覆盖物在屏幕上移动时触发调用此函数的后台函数 MKOverlayView mapView MKMapView mapView
  • 从远程 git 存储库获取单个文件

    有没有一种方法可以在 Java 中以编程方式从远程 git 存储库下载单个文件 我更喜欢使用尽可能少的带宽的解决方案 最好只下载单个文件 我不需要浏览存储库 我已经有了文件的路径 我更喜欢不依赖于其他应用程序的解决方案 例如 在计算机上安装
  • 如何启动和应用程序选择器

    该应用程序的任务是隐式激活一个单独的应用程序来查看 URL http www google com 因此 应用程序选择器应该出现并让我在至少两个浏览器之间进行选择 默认浏览器将向我显示 www google com 网站 另一个简单的 浏览
  • 需要 C# 中的 BouncyCastle PGP 文件加密示例

    我正在尝试使用我的私钥 ascii 格式 和任何其他公钥 也是 ascii 格式 加密文件 BouncyCastle 库看起来是正确的使用方式 但我找不到 C 的文档 谁能帮我举个例子 谢谢 以下是 BouncyCastle 示例中的一些代
  • 创建不包含外部依赖项的 JAR 文件

    是否可以创建需要外部依赖项的 JAR 文件 而不在 JAR 文件中包含这些依赖项 我的 google fu 未能给我答案 我发现的所有内容都显示了如何将它们包含在 JAR 文件中 但没有显示如何将它们放入清单文件中来表示 我还没有得到它们
  • 如何清除内存以防止VBA中的“内存不足错误”?

    我正在一个大型 Excel 电子表格上运行 VBA 代码 如何清除过程 调用之间的内存以防止发生 内存不足 问题 帮助释放内存的最佳方法是使大对象无效 Sub Whatever Dim someLargeObject as SomeObje
  • C++ 内联类方法导致未定义的引用

    当我尝试内联某个类的方法时 出现编译器错误 当我去掉 inline 关键字时它就起作用了 这是一个简化的示例 主要 cpp include my class h int main MyClass c c TestMethod return
  • 单击时搜索栏的拇指

    我想在搜索栏拇指上注册一个可点击事件 以便在用户单击它时触发事件 是否可以 结合 zwebie 和 Nermeens 的答案得出正确的解决方案 seekbar setOnSeekBarChangeListener new SeekBar O
  • 更好的蜜罐实施(形成反垃圾邮件)

    How do we get rid of these spambots on our site 每个网站都会成为受害者spambots在某一点 您的处理方式会影响您的客户 并且大多数解决方案可能会阻止某些人填写您的表格 这就是蜜罐技术的用武