繁体   English   中英

在没有PHP的情况下保护Web联系表单免受垃

[英]Protecting a web contact form from spam without PHP?

我应该为现有的Web联系表单实现某种垃圾邮件保护(验证码等)。 但是,原始表单使用我无法访问的虚拟服务器上的.cgi文件,因此我无法使用此脚本。 PHP邮件功能已关闭

我猜我需要自己的cgi文件,但我不是真的进入perl和cgi :-)

也许你可以指出我对这个问题的某种解决方案。

如果你想的话,你可以制作某种歪斜的抗体,你所有的用户都开启了javascript。

将表单action设置为某些404页面,然后在javascript中将其更改回正确的action页面。 例:

<form action="nowhere_ahaha" id="myform">
   ...
</form>
<script>
document.getElementById('myform').action = '/form_action.cgi';
</script>

所有这一切都有效,因为机器人通常不会运行js,但人类访问者会这样做。

你可以添加一个否定的Captcha:

负验证码与您的普通图像验证码具有完全相同的目的:防止机器人提交表单。 图像(“正面”)验证码通过实现仅人类可以执行的步骤来完成此操作,但机器人不能:从图像中读取混乱的字符。 但这很糟糕。 它会产生可用性问题,会损害转换率,并且会让很多人感到困惑。 为什么不反过来呢? 负验证码创建一个表单,其中只有机器人可以执行的任务,但人类不能。 这具有完全相同的效果,(与传闻相比)与正验证码相比,假阳性识别率低得多。 所有这一切都没有让人类在提交表格时遇到任何额外的麻烦。 这真的是双赢。 [来源]

在您的情况下,您最好使用蜜罐:添加一个新字段:

<div style="position: absolute; left: -2000px;"><input type="text" name="surname"  value="" /></div>

这假设您对收到姓氏不感兴趣。 如果人们设法填写此字段并提交,则他们很可能是机器人:普通浏览器不会显示该字段:普通用户不会看到它,因此不会填写它。

现在,在你的CGI脚本中,只需过滤“surname”; 如果设置,停止处理并给出错误,或者只是保留它。

或者,如果无法做到这一点,请尝试通过“where record has surname set”过滤已发布表单的结果。 比如说,如果您在excel / CSV中获得结果:只需使用excel过滤掉具有姓氏的项目。 或者使用您的电子邮件过滤器将姓氏:....的任何邮件移动到特殊目录中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM