Bot攻击/发送垃圾邮件联络表格prestashop 1.6

时间:2018-02-09 11:02:32

标签: prestashop bots prestashop-1.6 contact-form

我在使用prestashop联系表单发送垃圾邮件的机器人时遇到了问题。 我一直在寻找一个解决方案,最后我建立了自己的第二代码。

首先,我添加了一个解决了部分问题的reCaptcha。 Bot无法向服务器发送成功的请求,但机器人仍然能够搞砸我的统计数据。

要添加reCaptcha,请按照以下说明操作:

1: enter reCaptcha and generate the keys with your domain

2: Add <script src=https://www.google.com/recaptcha/api.js'></script> to header.tp just before the </head> tag

3: Add <div class="g-recaptcha" data-sitekey="[public Google key]"></div> to contact-form.tpl just before</form> tag

4:  go to /controllers/front/ContactController.php and just efter this line : $this->errors[] = Tools::displayError('Bad file extension');

add:

} else if (!($gcaptcha = (int)(Tools::getValue('g-recaptcha-response')))){

    $this->errors[] = Tools::displayError('Captcha not verified');

            }

机器人能够发送varius IP的请求表格(每5分钟有一个新的IP)这就是为什么手动阻止IP无能为力。

Bot正在向我的控制器发送一份填写好的表格: 控制器/前/ ContactController.php

在&#34之后立即将以下代码添加到您的控制器; if(Tools :: isSubmit(&#39; submitMessage&#39;)){&#34;:

$date = date("G:i");  // get actual hour and minute
            $file = "ip.txt";
            $ip = $_SERVER['REMOTE_ADDR'] ;


            if(date('i:s') == '00:00' || date('i:s') == '15:00' || date('i:s') == '30:00' || date('i:s') == '45:00' ){ // every 15 minutes
                file_put_contents($file, ""); // clear the file
            }

             if( strpos(file_get_contents("ip.txt"),$ip) !== false) { 

                $f = fopen(".htaccess", "r+");

                $oldstr = file_get_contents(".htaccess");
                $str_to_insert = "deny from " . $ip.PHP_EOL;
                $specificLine = "allow from all";


                while (($buffer = fgets($f)) !== false) {
                    if (strpos($buffer, $specificLine) !== false) {
                        $pos = ftell($f); 
                        $newstr = substr_replace($oldstr, $str_to_insert, $pos, 0);
                        file_put_contents(".htaccess", $newstr);
                        break;
                        }
                    }
                    fclose($f);

            }

以及&#34; $ this-&gt; errors [] =工具:: displayError(&#39; Captcha未经过验证&#39;);&#34; :

file_put_contents($file,$date .' IP: ' , FILE_APPEND); 
file_put_contents($file, $ip.PHP_EOL, FILE_APPEND);

此代码的作用是阻止.htaccess在15分钟内使用此控制器失败两次以上的每个IP。

一周后机器人放弃了:)

0 个答案:

没有答案