【发布时间】:2018-06-21 18:19:51
【问题描述】:
我有一个直截了当的网站用于我的业务,其中有一个联系表单(包含字段电子邮件、移动设备、类别和消息),在提交时会触发一封电子邮件给发件人阅读提供的电子邮件 ID。
面临的问题: 垃圾邮件是随机触发的。(作为修复,我集成了一个小的文本库验证码,询问两个 1 位数字的总和,如果提供的答案正确,则提交)。
前几天一切都很好,但随后垃圾邮件又开始四处飘荡。我想这应该是由于垃圾邮件发送者的一些垃圾机器人,但我只是在寻找一种方法可以阻止它并进行修复。
PS:到目前为止,我的 UI 选项有限,因此 Google 验证码/第 3 方验证码会破坏我网站的对齐方式。是的,它不是一个响应式网站。
更新代码以更清晰。
<?php
$sec1=rand(00,99);
$sec2=rand(01,10);
?>
<div id="leftpanel">
<div align="justify" class="graypanel">
<img src="images/computer.jpg"/>
<br><hr>
<form action="thankyou.php" method="POST" >
<fieldset><legend>Get in touch</legend>
<input type="text" name="name" placeholder="Your Name" class="formdata">
<input type="text" name="email" placeholder="Your Email" class="formdata">
<select name="business" class="formdata">
<option value="Business Not Disclosed">-------Select Business-------</option>
<option value="llp">LLP</option>
<option value="inc">Inc</option>
<option value="privateLimited">Private Limited</option>
<option value="publicLimited">Public Limited</option>
<option value="proprietor">Proprietor</option>
<option value="startup">Startup</option>
</select>
<input type="text" name="ans" placeholder="Captcha : <?php echo $sec1; ?>+<?php echo $sec2; ?>=?"><br><br>
<input type="hidden" name="trigger" value="true">
<input type="hidden" name="sec1" value="<?php echo $sec1; ?>">
<input type="hidden" name="sec2" value="<?php echo $sec2; ?>">
<input type="submit" value="submit" class="submit">
</fieldset>
</form>
</p>
</div>
</div>
【问题讨论】:
-
您可以将消息字段重命名为 smth else 并将隐藏字段(或不可见的文本区域)命名为消息。所以机器人会在这个字段中输入,而人类用户不会在这个字段中填写。您也可以在服务器上检查是否存在电子邮件 domail 并且电话是否有效。但它并不适用于所有机器人,只会让他们的业务更加困难。
-
@SergiyT。是的,这就是它现在的样子。 1)有隐藏字段以阻止机器人 2)有逻辑检查,它询问什么是 2+3,然后将答案保存为隐藏字段。在提交时,它会通过提交的答案与隐藏字段中的答案进行验证。
-
所以您将有效答案存储为隐藏字段并在服务器端检查提交?也许输出图像而不是数字并要求用户输入他们在图像中看到的内容,识别图像比识别文本/数字要困难得多。您可以将图像 id 与 tex 输入进行比较,即 1.jpg - 正方形、2.jpg - 三角形等。但这也让普通用户的生活变得更加困难。还有一个问题,如果垃圾邮件发送者是真实的人,而不是机器人/脚本,该怎么办。
标签: php spam-prevention