gpt4 book ai didi

spam-prevention - "timestamp analysis"究竟如何阻止垃圾邮件?

转载 作者:行者123 更新时间:2023-12-04 03:12:18 28 4
gpt4 key购买 nike

This article on how much CAPTCHA sucks提到 Animoto 使用时间戳分析来减少垃圾邮件。

它包含指向 jQuery tutorial 的链接关于时间戳分析。基本上,您使用 AJAX 让 PHP 设置 cookie,使用 JS 向表单添加隐藏输入,然后(在提交时)将隐藏输入值与 cookie 值进行比较。来自教程:

Checking the Form

test.php is the example PHP code used to verify the token

  • Is the token [hidden input value] present?
  • Does it match the timestamp when run through the md5() function?
  • Has too much time elapsed?

...但这对我来说似乎真的很费解,原因如下:

  • token 是否存在? token 仅由 JavaScript 添加,因此您真正要做的只是检测 JS 是否已启用。当然,有更简单的方法可以做到这一点。
  • 通过 md5() 函数运行时是否匹配时间戳? md5 可能会让我们感觉更好,但这不只是确保启用 cookie 吗?当然,有更简单的方法可以做到这一点。
  • 时间过长吗?垃圾邮件机器人真的需要很长时间才能提交表格吗?当然这是不必要的。 (您真的不想看看表单提交的时间是否太快了吗?)

我希望我实际上不知道机器人如何或为何与 HTML 表单交互,现在我可以得到纠正和教育。

最佳答案

  • token 是否存在?是的,您几乎可以看到客户端中是否启用了 JavaScript。但其背后的要点是,许多 Web 自动化框架不支持 JavaScript(或仅支持它的某些有限子集),而那些具有适当 JavaScript 支持的框架往往相当重量级,因此不适合用作垃圾邮件-机器人。所以基本上你过滤掉了简单的垃圾邮件机器人,这些机器人依赖于将表单发布到 URL,而不实际评估包含表单的页面上的任何内容。

接下来的两点似乎更多地防止垃圾邮件机器人缓存和重复使用表单提交,而不是防止给定表单提交在其封闭页面从服务器加载后花费太长时间。正如您所说,如果垃圾邮件机器人遵循从您的服务器请求表单然后提交回复。但并非所有垃圾邮件机器人都会遵循该流程。有些可能会缓存您的服务器发送的页面(或为该页面生成的响应)以便一遍又一遍地重用。如果他们这样做了,那么时间戳/cookie 会为您提供一种检测方法。

但我真的认为时间戳是不必要的。我会坚持使用 token + JavaScript,使用大致如下的方法:

  1. 每次请求页面/表单时,服务器都会为该请求生成一个新的随机 token 。
  2. token 与用户当前的 HTTP session 相关联。
  3. token (或它的一些轻度加密版本)也被发送到页面。
  4. JavaScript 将 token 值作为表单的隐藏输入添加(如有必要,先对其进行解密)。
  5. 提交时,服务器会检查 a) 用户的 HTTP session 中是否存在 token ,b) 表单是否提交了 token ,以及 c) 两个 token 是否匹配。
  6. 假设提交有效,服务器会从用户的 HTTP session 中清除 token ,这样它就不能被重复使用。

因此所有显式时间戳废话都消失了,因为它内置于 HTTP session 中。非常旧的 session 将过期,并带走它们的 token 。您仍然过滤掉任何不够复杂以支持 JavaScript 或 cookie 的垃圾邮件机器人,并且您无法使用缓存的 URL/表单提交,因为第 6 步确保没有 token 可以被多次使用。基本上,垃圾邮件机器人被迫经历从您的服务器请求页面、执行 JavaScript 以及为它想要进行的每次提交提交表单的整个周期。

关于spam-prevention - "timestamp analysis"究竟如何阻止垃圾邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5762796/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com