【问题标题】:Web form using PHP is sending spam even with CAPTCHA即使使用 CAPTCHA,使用 PHP 的 Web 表单也会发送垃圾邮件
【发布时间】:2019-11-02 23:45:46
【问题描述】:

我的网站上有一个表格,尽管上面的验证码有效,但它已经开始发送大量垃圾邮件。

我注意到垃圾邮件发送者(即使我们的表格没有发布到博客上也试图将链接放在廉价训练鞋上)在填写表格时反复使用验证码文本。

我想要一种方法来检查三个表单域的条目是否相同,并在那时拒绝邮件。它已经到了我们缺少真正的询问的地步。

我尝试了检查空白隐藏字段检测垃圾邮件的方法,但没有成功

我使用一个标准脚本,使用一个名为 CaptchaSecurityImages.php 的公共领域图像生成器,到目前为止它运行良好这是一个垃圾邮件示例

Submit: Submit    
Name: T Shirt Women Summer    
Email: *******@gmail.com   
Address Line 1: ksjj22   
Address Line 2: ksjj22   
Town: ksjj22    
City: ksjj22    
Postcode: ksjj22    
Telephone: ksjj22    
Make: ksjj22    
Model: ksjj22   
Registration: ksjj22
Collection Date: ksjj22
Security code: ksjj22
Other information: Great post but I was wanting to know if you could write a litte more on this topic? I'd be very grateful if you could elaborate a little bit further. Cheers!
<a href="spam web address" >T Shirt Women Summer</a> [url=spam web address]T Shirt Women Summer[/url]

感谢您的帮助。

【问题讨论】:

  • 听起来要么是你的验证码不够好,要么是真人,时间太长......
  • 您确定邮件来自您的表单吗?我问的原因是,我们曾经遇到过同样的问题,但他们只是模仿我们的邮件,并没有通过我们的联系表发送给他们
  • 你有什么验证码?
  • 我们使用的 captcahsecurityimages.php 到目前为止一直很棒!我注意到的是垃圾邮件发送者阅读代码并将其粘贴到大多数字段中/跨度>
  • 我会说你正受到世界著名的 PainInTheA$%£ 机器人的攻击。换句话说,一个普通的老人。

标签: php html forms


【解决方案1】:

您可能还想实现HoneyPot。蜜罐的主要思想是有一个隐藏的空输入表单。垃圾邮件机器人会用一些值填充每个输入字段,即使它被 css 隐藏。然后您可以在您的 php 提交表单中调用 isempty()。如果不是,那么您有垃圾邮件。这是 capta 的轻松替代方案。

无论如何,如果攻击者专门为您的网站设置了机器人,这并不能防止他们发送垃圾邮件。如果你仍然受到攻击。获取发送信息的人的 IP 地址,如果他们发布超过 5 次,则阻止他们。如果您有屡犯者的 IP 地址,您可以完全阻止该 IP 地址访问该网站。

【讨论】:

  • 盲人的无障碍环境怎么样?
  • 嗨,我尝试了隐藏字段,但我们仍然收到垃圾邮件
  • 将从今天开始尝试 IP 检查 谢谢
  • IP 块的问题是你无法可靠地获取 IP;除非您非常小心并了解此处的所有警告,否则您意外阻止无辜客户。
  • @L.Wartel 这可以通过使用带有文本“请不要填写此内容,否则表格将无法正常工作”或诸如此类的隐藏标签来稍微好一点。这并不完美,但比只是坐在那里输入要好......
【解决方案2】:

我使用一个标准脚本,使用名为 CaptchaSecurityImages.php 的公共域图像生成器

您的图灵测试越广泛,机器人就越有可能明确地针对它,并且能够破坏它。图像识别脚本非常先进,并且一直在变得更加先进。在 2014 年,让计算机“难以”阅读图像变得异常困难。

我在几个小型网站上做的,是要做的:

Please enter the number 42 here to prove you're a human: [   ]

到目前为止,它的效果出奇的好。在代码中,您需要做的就是检查数字是否匹配,因此它很容易实现,并且适用于您的所有客户(包括可能是盲人或有其他可访问性需求的客户),这并不总是基于图像的图灵测试的案例(“验证码”是我相信的时髦词)。

这是可行的,因为解析一行文本,找出含义并给出正确答案,对于计算机来说仍然是一个难题(尽管将来可能会改变),所以即使是这样一个非常简单的问题也会够了。

您也可以对此进行扩展,并提出简单的问题,例如“现在是哪一年”,或“六乘七是多少”。您要确保您的目标受众在实际知道答案方面有很好的变化。

当然,您可以在所有这些之间随机交替。不过,到目前为止,我还没有必要这样做,我建议从问一个简单的问题开始。

请注意,这仅适用于相对小型的网站。一旦您的网站或产品达到一定规模,它就会变得足够有趣,可以明确定位;此时,一个人坐下来,编写一个机器人来回答您写下的所有问题。
但是,根据您的描述,我认为您的网站“足够小”。

【讨论】:

  • 我不是最伟大的 PHP 程序员有没有一种简单的方法来比较输入并拒绝邮件而不通知发件人
  • @PaulPayne 最简单的方法是if ((int) $_POST['turing_test'] !== 42) { exit(1); },但如果出现拼写错误,您可能希望显示错误
  • 如果电话号码与验证码相同,请进行一些小改动
  • 我用过这个
    $Telephone = $_POST['Telephone']; $Security_code = $_POST['security_code']; if($Telephone == $Security_code) { 退出(1); }
【解决方案3】:

我最终使用以下代码来检测垃圾邮件提交。对于我们一直遇到的问题,这似乎是一两个实际的人在我们网站上的表格中输入信息,以下标识在电话字段中使用验证码(它被用于大多数字段)并转储脚本防止我们的收件箱被垃圾邮件填满(希望垃圾邮件发送者不知道是这种情况)

$Telephone = $_POST['Telephone'];
$Security_code = $_POST['security_code'];

if ($Telephone == $Security_code) 

   header("Location: /");
else

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-01
    • 1970-01-01
    • 2021-01-26
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多