这个针对垃圾邮件的简单概念有效吗?(需要优化?)

Is this simple concept against spam valid? (Optimization required?)

本文关键字:有效 优化 简单      更新时间:2023-09-26

简介

我们在早期的一个项目中处理了一些垃圾邮件问题,并用以下简单的概念防止了任何垃圾邮件机器人。我现在想把它变成一个更大的项目。在我这样做之前,我希望优化它,使其在同一页面上以多种形式工作,但我还没有掌握诀窍,或者我不确定是否值得将其重建为一个更复杂的版本,如果它无用的话。

为了澄清:我不想处理CAPTCHA或类似的事情。只需执行本机解决方案

概念

如果用户关注表单的任何input字段,则将发送AJAX查询,其中将生成随机哈希标签并将其存储到$_SESSION变量中。这个散列还将被写入一个名为spamKey的隐藏输入字段(例如(。

用户提交表单后,我检查$_SESSION["spamKey"]变量是否等于$_POST["spamKey"]变量,因此我决定是否处理查询。

代码

简单形式

<form action="index.php" method="post" id="formOne">
    <label for='input_eins'>Name</label>
        <input type='text' id='input_eins' name='name' />
    <label for='input_user'>E-Mail</label>
        <input type='text' id='input_user' name='user' />
    <label for='ta_text'>Comment</label>
        <textarea name='text'></textarea>
    <label for='input_spamKey'>spamKey</label>
        <input type='text' id='input_spamKey' name='spamKey' />
    <input type='submit' value='Senden'>
</form>

script.js(使用jQuery(

var spamKey = false;
$("#formOne > input").focus(function() {
         if(spamKey == false) {
        dataString = "action=getSpamKey";
        $.ajax({
            url: 'asyncresponse.php',
            data: dataString,
            type: "POST",
            success: function(data) {
                $("#input_spamKey").val(data);
                if(data != "") {
                    spamKey = true;
                }
              }
        });
    }
});

asyncresponse.php(信息:POST变量已清理(

if($_POST["action"] == "getSpamKey") {
    $spamKey = md5(time().microtime());
    $_SESSION["spamKey"] = $spamKey;
    echo $spamKey;
}

PHP中的检查例程

($_SESSION["spamKey"] == $_POST["spamKey"] && !empty($_SESSION["spamKey"]))

好的-我的问题是什么

你建议我采取哪些步骤来保护多种形式?可能还有一个基本问题——这是处理垃圾邮件问题的有效解决方案吗?

感谢您提前提供的帮助。

你可以在这里找到一个简单的演示:http://godesign.ch/labor/antispam/index.php

Captcha曾经是防止垃圾邮件的有效方法。它现在被打破了,因为它被广泛实施,创造了打破它的经济激励(谷歌"captcha breaked"(。

我看到这种方法在项目中是有效的。你有可能在某个时候有人会有动机破坏它。正确实施,我相信它在这个时候提供了合理的垃圾邮件防护。