Spam via contactformulier

Ik heb last van spam-berichten die via een contactformulier op m'n site binnen komen. Hoe kan ik het formulier beter beveiligen?

[code:1:9d236fb644]<?
$mail_ontv = "stan.jm@gmail.com";

            function checkmail&#40;$mail&#41; 
            &#123; 
                $email_host = explode&#40;&quot;@&quot;, $mail&#41;; 
                $email_host = $email_host&#91;'1'&#93;; 
                $email_resolved = gethostbyname&#40;$email_host&#41;; 
            
                if &#40;$email_resolved != $email_host &amp;&amp; eregi&#40;&quot;^&#91;0-9a-z&#93;&#40;&#91;-_.~&#93;?&#91;0-9a-z&#93;&#41;*@&#91;0-9a-z&#93;&#40;&#91;-.&#93;?&#91;0-9a-z&#93;&#41;*\.&#91;a-z&#93;&#123;2,4&#125;$&quot;,$mail&#41;&#41; 
                    $valid = 1; 
            
                return $valid; 
            &#125; 
            
            // velden nakijken 
            if &#40;!$_POST&#91;'submit'&#93; || $_POST&#91;'submit'&#93; &amp;&amp; &#40;!$_POST&#91;'naam'&#93; || !$_POST&#91;'mail'&#93; || !checkmail&#40;$_POST&#91;'mail'&#93;&#41; || !$_POST&#91;'msggs'&#93; || !$_POST&#91;'onderwerp'&#93;&#41;&#41; 
            &#123; 
                if &#40;$_POST&#91;'submit'&#93; &amp;&amp; &#40;!$_POST&#91;'naam'&#93; || !$_POST&#91;'mail'&#93; || !checkmail&#40;$_POST&#91;'mail'&#93;&#41; || !$_POST&#91;'msggs'&#93; || !$_POST&#91;'onderwerp'&#93;&#41;&#41;   
                &#123; 
                    echo &quot;Vul a.u.b. alle velden juist in.&lt;br&gt;&lt;br&gt;&quot;; 
                &#125; 
                  
                // form + tabel 
                echo &quot;&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&quot;; 
                echo &quot;&lt;form method=&quot;POST&quot; ACTION=&quot;&quot; . $_SERVER&#91;'PHP_SELF'&#93; . &quot;&quot;&gt;&quot;; 
                  
                // naam 
                echo &quot;&lt;tr&gt;&lt;td&gt;Naam&#58;&lt;/td&gt;&lt;/tr&gt;&quot;; 
                echo &quot;&lt;tr&gt;&lt;td&gt;&lt;input type=&quot;text&quot; size=&quot;47&quot; name=&quot;naam&quot; value=&quot;&quot; . $_POST&#91;'naam'&#93; . &quot;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&quot;; 
                  
                // space 
                echo &quot;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&quot;; 
                  
                // mail 
                echo &quot;&lt;tr&gt;&lt;td&gt;E-mailadres&#58;&lt;/td&gt;&lt;/tr&gt;&quot;; 
                echo &quot;&lt;tr&gt;&lt;td&gt;&lt;input type=&quot;text&quot; size=&quot;47&quot; name=&quot;mail&quot; value=&quot;&quot; . $_POST&#91;'mail'&#93; . &quot;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&quot;; 
                  
                // space 
                echo &quot;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&quot;; 
                  
                // onderwerp 
                echo &quot;&lt;tr&gt;&lt;td&gt;Onderwerp&#58;&lt;/td&gt;&lt;/tr&gt;&quot;; 
                echo &quot;&lt;tr&gt;&lt;td&gt;&lt;input type=&quot;text&quot; size=&quot;47&quot; name=&quot;onderwerp&quot; value=&quot;&quot; . $_POST&#91;'onderwerp'&#93; . &quot;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&quot;; 
                  
                // space 
                echo &quot;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&quot;; 
                  
                // bericht 
                echo &quot;&lt;tr&gt;&lt;td&gt;Bericht&#58;&lt;/td&gt;&lt;/tr&gt;&quot;; 
                echo &quot;&lt;tr&gt;&lt;td&gt;&lt;TEXTAREA name=&quot;msggs&quot; style=&quot;max-width&#58;335px&quot; ROWS=&quot;6&quot; COLS=&quot;45&quot;&gt;&quot; . htmlentities&#40;$_POST&#91;'msggs'&#93;&#41; . &quot;&lt;/TEXTAREA&gt;&lt;/td&gt;&lt;/tr&gt;&quot;; 
                  
                // space 
                echo &quot;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&quot;; 
                  
                // button 
                echo &quot;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&quot;; 
                echo &quot;&lt;tr&gt;&lt;td&gt;&lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;Versturen&quot;&gt;&amp;nbsp;&lt;input class=&quot;button&quot; type=&quot;reset&quot; name=&quot;reset&quot; value=&quot;Wissen&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&quot;; 
                  
                // sluit form + tabel 
                echo &quot;&lt;/form&gt;&quot;; 
                echo &quot;&lt;/table&gt;&quot;; 
            &#125; 
            // versturen naar 
            else 
            &#123;      
                // set datum 
                $datum = date&#40;&quot;d.m.Y H&#58;i&quot;&#41;; 
                  
                // set ip 
                $ip = $_SERVER&#91;'REMOTE_ADDR'&#93;; 
                  
                $inhoud_mail = &quot;===================================================n&quot;; 
                $inhoud_mail .= &quot;Contactformulier op www.flstudio.nln&quot;; 
                $inhoud_mail .= &quot;===================================================nn&quot;; 
            
                $inhoud_mail .= &quot;Naam&#58; &quot; . $_POST&#91;'naam'&#93; . &quot;n&quot;; 
                $inhoud_mail .= &quot;E-mail adres&#58; &quot; . $_POST&#91;'mail'&#93; . &quot;nn&quot;; 
                $inhoud_mail .= &quot;---Bericht---n&quot;; 
                $inhoud_mail .= $_POST&#91;'msggs'&#93; . &quot;nn&quot;; 
                  
                $inhoud_mail .= &quot;---Gebruikersinformatie---n&quot;;     
				$inhoud_mail .= &quot;Verstuurd op &quot; . $datum . &quot; via het ip &quot; . $ip . &quot;n&quot;; 
				$inhoud_mail .= &quot;Browser-info&#58; &quot;.$_SERVER&#91;&quot;HTTP_USER_AGENT&quot;&#93;.&quot;rn&quot;;
				$inhoud_mail .= &quot;Gestuurd vanaf&#58; &quot;.$_SERVER&#91;&quot;HTTP_REFERER&quot;&#93;; 
                
                // -------------------- 
                // spambot protectie 
                // --------------------
                
                $headers = &quot;From&#58; &quot; . $_POST&#91;'naam'&#93; . &quot; &lt;&quot; . $_POST&#91;'mail'&#93; . &quot;&gt;&quot;;
                
                $headers = stripslashes&#40;$headers&#41;;
                $headers = str_replace&#40;&quot;n&quot;, &quot;&quot;, $headers&#41;; // Verwijder n 
                $headers = str_replace&#40;&quot;r&quot;, &quot;&quot;, $headers&#41;; // Verwijder r 
                $headers = str_replace&#40;&quot;&quot;&quot;, &quot;\&quot;&quot;, str_replace&#40;&quot;\&quot;, &quot;\\&quot;, $headers&#41;&#41;; // Slashes van quotes 
                
                $_POST&#91;'onderwerp'&#93; = str_replace&#40;&quot;n&quot;, &quot;&quot;, $_POST&#91;'onderwerp'&#93;&#41;; // Verwijder n 
                $_POST&#91;'onderwerp'&#93; = str_replace&#40;&quot;r&quot;, &quot;&quot;, $_POST&#91;'onderwerp'&#93;&#41;; // Verwijder r 
                $_POST&#91;'onderwerp'&#93; = str_replace&#40;&quot;&quot;&quot;, &quot;\&quot;&quot;, str_replace&#40;&quot;\&quot;, &quot;\\&quot;, $_POST&#91;'onderwerp'&#93;&#41;&#41;; // Slashes van quotes 
                 
                mail&#40;$mail_ontv, $_POST&#91;'onderwerp'&#93;, $inhoud_mail, $headers&#41;; 
                 
                echo &quot;&lt;h1&gt;Je e-mail is verstuurd&lt;/h1&gt;&quot;;
                
                echo &quot;&lt;p&gt;Bedankt voor het versturen van een e-mail. Je zult snel een antwoord &quot;; 
                echo &quot;krijgen indien dit nodig is.&lt;/p&gt;&quot;; 
            &#125; 
            ?&gt;[/code:1:9d236fb644]</p>

Misschien een Captcha erop zetten..

Inderdaad.. een Captcha erop zetten.

Ik heb overigens hetzelfde contactformulier op webflip.nl staan, maar heb totaal geen last van spam en andere dingen.
Vreemd.

Of een melding bij het formulier plaatsen

“Dear spammer, please don’t use this” 8)

Ik kwam laatst dit tegen ook wel handig [url=http://1080degrees.net/archive/journal/reverse_captcha]Reverse Captcha[/url]

[quote:edb5cb7183="Almerrrrr"]Ik kwam laatst dit tegen ook wel handig [url=http://1080degrees.net/archive/journal/reverse_captcha]Reverse Captcha[/url][/quote:edb5cb7183]

Dat begrijp ik niet helemaal…

[quote:409258018c="The JM"][quote:409258018c="Almerrrrr"]Ik kwam laatst dit tegen ook wel handig [url=http://1080degrees.net/archive/journal/reverse_captcha]Reverse Captcha[/url][/quote:409258018c]

Dat begrijp ik niet helemaal…[/quote:409258018c]

Het leuke aan bots is, is dat ze alles invullen. De tip is dus om een veld in je formulier op te nemen die je met een CSS code verstopt. Vervolgens doe je in je formulier controle een controle of het veld nog steeds leeg is. Zo ja: normale gebruiker, zo nee: een bot. Normale gebruikers zullen door de CSS code het veld niet zien en leeg laten. Bots parsen de webpagina anders en zullen alle velden invullen.

Ahzo, oke. Ik heb het toegevoegd, en we zullen zien of het effect heeft.

[quote:bdf7689027="Nielsvr"][quote:bdf7689027="The JM"][quote:bdf7689027="Almerrrrr"]Ik kwam laatst dit tegen ook wel handig [url=http://1080degrees.net/archive/journal/reverse_captcha]Reverse Captcha[/url][/quote:bdf7689027]

Dat begrijp ik niet helemaal…[/quote:bdf7689027]

Het leuke aan bots is, is dat ze alles invullen. De tip is dus om een veld in je formulier op te nemen die je met een CSS code verstopt. Vervolgens doe je in je formulier controle een controle of het veld nog steeds leeg is. Zo ja: normale gebruiker, zo nee: een bot. Normale gebruikers zullen door de CSS code het veld niet zien en leeg laten. Bots parsen de webpagina anders en zullen alle velden invullen.[/quote:bdf7689027]Dat is echt best wel cool…

Heel effectief:

random getal in de sessie opslaan, vervolgens deze gewoon echoo’en op de pagina, in een label ofzo. Vervolgens laat je die random waarde door de gebruiker overtypen. Daarna check je even of de ingetypte waarde overeen komt met hetgeen in je sessie. De meeste spambots te dom om het te omzeilen. :slight_smile:

Maar gebruikers hebben geen last van die oplossing met een verborgen tekst-veld. En dat is altijd beter, vind ik.

[quote:f50ca438db="nipro"]Heel effectief..[/quote:f50ca438db] een voorbeeld: http://evolt.org/simple-captcha