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

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(使用前将#替换为@)

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

  • 大文本字段的 jQuery AJAX 上传进度

    是否可以使用 jQuery ajax 获取具有非常大文本字段的表单的上传进度 我认为客户端知道已经发送了多少字节 但是当我谷歌时 我只找到使用服务器站点代码的文件上传解决方案 这是我的 ajax 请求 ajax type POST url
  • 将 MS-Access 表单结果导出到 Excel?

    我对 Access 有点陌生 我在将 MySQL 和 Oracle 与 PHP 集成以创建基于 Web 的数据库搜索引擎方面拥有一些经验 但我很难理解 Access 的某些概念 我有一个小型数据库 其中包含大约 200 个条目 每个条目有
  • 当机器人攻击时! [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使输入字段的宽度为 100% 减去提交按钮的宽度?

    我有一个非常基本的单一输入字段 旁边有一个 提交 按钮 搜索按钮的固定宽度为 104 像素 两者都包裹在一起 总宽度占浏览器视口的 50 我的计划是允许输入字段随着浏览器窗口的扩大而扩大 目前 对于我的特定浏览器窗口 我必须修复输入字段的宽
  • Rails 中多表单复选框的数据库结构

    我正在开发一个 Rails 应用程序 允许用户创建时间表 这样做时 他们应该能够选择事件发生在一周中的哪几天 我计划在表单中执行此操作的方式是每个工作日旁边有一个复选框 如下所示 etc 然而 我发现这可能不是处理这个问题的非常有效的方法
  • 提交表单后关闭featherlight

    我有一个 demo employee php 页面 它检索系统的所有用户以及可以执行的特定操作 td table tr td a href i class fa fa pencil square o i a td td a href i c
  • 在表单中突出显示选定的图像 - 使用 Jquery?

    我在谷歌上搜索了答案 但发现什么也没有 所以即使是一个显示如何执行以下操作的页面的链接也将不胜感激 基本上我有一个只有图像的表格
  • JSON 数据的动态表单(不同类型)

    我尝试使用 JSON 中的数据在 AngularJS 中创建动态表单 我有这个工作 HTML p p
  • 影响浏览器是否提示保存凭据

    对于大多数具有用户名和密码对话框的网页 浏览器将提示用户是否要保存该表单的凭据 然而 对于此登录页面 http vdn volvoce com 事实并非如此 我找不到关于 IE 如何决定是否显示此对话框的任何好的数据 如何让 IE 显示该提
  • 编辑表单以清理/验证电话号码

    我对 PHP 的经验非常有限 我真的希望有人可以帮助我 我想要做的是清理 验证输入的电话号码 以便只允许使用数字 我想我需要使用FILTER SANITIZE NUMBER INT但我不确定在哪里或如何使用它 这是我的代码
  • 使用 javascript 而非 jQuery 的简单 ajax 表单

    我正在使用一个表单 其标记我无法更改且无法使用 jQuery 目前 该表单将结果发布到新窗口 是否可以将其更改为 ajax 表单 以便在提交时显示结果而不更改任何标记 将结果 标记 从结果页面拉回到表单页面 这是表单的标记
  • 在node.js中使用pug在表单“post”之后发送空的{}

    我正在尝试使用 fetch 和以下 pug 代码通过 post 将表单数据从登录页面传递到登录页面 form id form login input type text name email value placeholder Tu ema
  • PHP - 存储和计算无线电输入的总分

    我设计了一个基于网络的小型系统 其中有一个学校评估表 可以向可以访问该系统的特定用户询问一些问题 并且输入将是单选类型 1或2或3或4 该代码正在运行 可以将输入插入数据库 但我不知道计算总分并将其存储在数据库中的正确查询 这是当前正在运行
  • 将属性标记中的值提交到操作表单

    The JSP
  • Jquery一键提交多个同名表单

    我有动态创建的循环表单 我需要一键提交所有表单 我正在遵循下面的代码 你能建议我怎么做吗 谢谢
  • PHP 表单 - 带验证蜜罐

    我有以下内容 效果很好 但对垃圾邮件机器人开放 我想放入蜜罐 而不是验证码 下面的代码适用于验证姓名 电子邮件 消息 但我无法让它与蜜罐一起工作 任何人都可以查看 蜜罐 代码并告诉我如何修复它吗 我希望表单给出 success2 不允许垃圾
  • PHP 电子邮件表单每次刷新页面时都会发送电子邮件

    我的 php 电子邮件每次刷新页面时都会发送电子邮件 例如 用户正在填写表单并使用发送按钮发送 这一切都很好 但如果他们刷新页面 它会再次发送包含所有相同表单信息的电子邮件 我相信这是问题代码 但不知道它是什么 require once c
  • 防止按下回车键时提交表单[重复]

    这个问题在这里已经有答案了 我们如何防止按下回车键时提交表单 实际上我有一个文本框 在该文本框中输入一个值并单击输入时 textbox2 将获得焦点 默认情况下 单击输入按钮后将提交表单 所以我无法得到输出 我在提交按钮的 onclick
  • 设置 runat=server 时输入名称和 id 发生变化

    在我的表单中 我需要插入 文本 类型的不同输入 输入必须是带有名称和 ID 的 html 控件 因为我将此表单发送到外部网址 对于验证 我在所有输入中执行 runat server 然后我可以使用 requiredfieldvalidato
  • 在一个提交按钮中的新窗口中打开 URL 的两个表单操作?

    是否可以将两个表单操作放在一个提交按钮中 用户将能够选择两个单选按钮 每个表单操作将同时在新窗口中打开 URL 我不知道该怎么做 而且我在编码方面没有太多知识 这段代码不是我的 我只是想修改一下 这是代码

随机推荐

  • $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在某一点 您的处理方式会影响您的客户 并且大多数解决方案可能会阻止某些人填写您的表格 这就是蜜罐技术的用武