Goedendag allemaal.

Ik heb een website in PHP en CSS geschreven. Alles is verder goed.
Maar wat blijkt, al komt dit niet veel voor, ik krijg via mijn contact.php ook wel eens spam en advertising binnen, verdwijnt dan wel naar de map 'Ongewenst' in Thunderbird, toch is het vervelend dat ze zich zo toegang verschaffen.
Mijn script in contact.php ziet er als volgt uit:
<?php
require("header.php");
?>
<br>

<div class="wDiv3" align="center">
<img src="images/earth6.gif" border="0" align="left">
<br><br>
If you want to contact Peter, please contact the webmaster. See the contact formular hereunder.
<br>
Peter however says: "I'll try to reply your message anyway, if not, don't be disappointed,
<br>
because I'm glad that you contact me and are interested. Thanks anyway."
<br><br>
<p>Please do not send any advertising material or spam. The webmaster.</p>
<br><br>
<form action="<?php echo $PHP_SELF?>" method="post" name="contact_form">
<table width="100%" border="0">
<tr> 
<td align="left" valign="top"><font face="Arial" color="#191970" size="-1">Name: </font></td>
<td><input name="name" type="text" size="40" checked> <img src="images/star.gif" alt="required field" align="absmiddle"></td>
</tr>
<tr> 
<td align="left" valign="top"><font face="Arial" color="#191970" size="-1">E-mail address: 
</font></td>
<td><input name="email" type="text" size="40" checked> <img src="images/star.gif" alt="required field" align="absmiddle"></td>
</tr>
<tr> 
<td align="left" valign="top"><font face="Arial" color="#191970" size="-1">Subject: 
</font></td>
<td><input name="subject" type="text" size="40" checked> <img src="images/star.gif" alt="required field" align="absmiddle"></td>
</tr>
<tr> 
<td align="left" valign="top"><font face="Arial" color="#191970" size="-1">Your message</font></td>
<td><textarea name="message" cols="60" rows="10"></textarea> <img src="images/star.gif" alt="required field" align="absmiddle"></td>
</tr>
<tr>
<td class="style66" colspan="2"><input type="checkbox" name="copy" value="true" /><align="left" valign="top"><font face="Arial" color="#191970" size="-1">Send a copy to yourself</font></td>
</tr>
<tr> 
<td align="left" valign="top"><font face="Arial"> 
<input type="reset" name="Reset" value="Reset">
</font></td>
<td><font face="Arial">
<input type="submit" name="Send" value="Send">
<p><img src="images/star.gif" alt="required field" align="absmiddle"> <font face="Arial" color="#191970" size="-1">= Required </font></p>
</font></td>
</tr>
</table>
</form>
<?php
if (isset($_POST['Send'])) {
      $recipient = "[email protected]";
      $subject = stripslashes($_POST['Subject']) . ' <' . $_POST['subject'] . ">\n";
      $header = "From:" . stripslashes($_POST['name']) . ' <' . $_POST['email'] . ">\n";
     if (isset($_POST['copy']) && $_POST['copy'] == 'true') {
         $header .= 'BCC: ' . $_POST['email'] ."\n";
     }
      $header .= "\n";
      $mail_body = "The contact formular has been sent on " . date("d-m-Y \a\\t H:i") .  " and executed.\n";
      $mail_body .= "The next details have been filled in:\n\n";
      $mail_body .= "Name: " . stripslashes($_POST['name']) . "\n";
      $mail_body .= "E-mail address: " . $_POST['email'] . "\n\n";
      $mail_body .= "Message: \n" . stripslashes($_POST['message']) . "\n";
      $mail_body .= "\n\n -- End of the automatically generated message --";
      mail($recipient, $subject, $mail_body, $header, '-f ' . $_POST['email']);
      require("footer.php");
}
?>


Nu vraag ik mij af of ik ergens 'middenin' dit script een bepaald script kan opnemen om die spam en advertising tegen te gaan. Ik weet wie mij benadert voor informatie over mijn boeken en muziek, dat is goed.

Weet iemand hoe ik dit kan doen?
require("header.php"); en require("footer.php"); moeten natuurlijk overanderd blijven.

Ik hoor het graag even.

Mijn vriendelijke dank.

Groet, Peter


Persoonlijk zou ik kiezen voor enkele aanpassingen:

- Gebruik maken van PHPmailer, om de juiste mailheaders te gebruiken, en beveligd te zijn tegen mailheader injection.
- Gebruik maken van een captcha (recaptcha) of geautomatiseerde requests tegen te gaan
- CSRF-tokens gebruiken, zodat je niet continu kan refreshen met F5, omdat er steeds een unieke code verwacht wordt.

En op de boel op te schmucken, zou ik tabellen in zijn geheel vermijden, en alles met CSS afhandelen. Deze opmaak-constructie komt nog uit begin jaren 2000(!). En verder bestaat $PHP_SELF al ruim 10 jaar niet meer!
Beste Ariën,

Bedankt voor het goede advies.
Het is inmiddels duidelijk voor mij. Ik heb zojuist alles over de PHPmailer gelezen, dus dat is ook duidelijk.
Van (re)captcha heb ik ook gehoord, ga ik ook nakijken. Inderdaad ga ik de CSRF-tokens gebruiken, de tabellen vermijden en verder met CSS afhandelen.
Bedankt ook over $PHP_SELF, dat komt eigenlijk omdat die site al rond die tijd bestaat.

Groet, Peter
Haal je mailadres even uit je code. Anders krijg je mogelijk nog meer spam....
Leuk advies, Obelix en Idefix, maar naar wie komt dan de mail vanuit die contact.php die wel aan mij gericht is voor de promotie en verkoop van mijn muziek en boeken? Dus de serieuze mensen lijken mij dan de pineut evenals ik. Of heb je daar een gerede oplossing voor? Het is per slot van rekening toch niet voor niets een contact.php form?
Overigens ben ik al aan het kijken naar de PHPmailer. Recaptcha is niet zoveel, niet iedereen schijnt daarin zin te hebben. Dit kan dus ook de echt geïnteresseerden raken.
Maar ik ben toch benieuwd hoe je eerste probleem denkt op te lossen.

Groet en bedankt, Peter
>> Leuk advies, Obelix en Idefix, maar naar wie komt dan de mail vanuit die contact.php die wel aan mij gericht is voor de promotie en verkoop van mijn muziek en boeken?

Hij bedoelt uit de code hierboven (in je eerste bericht) ;-)
Dank Ozzie PHP, ik begrijg het.
Hoewel ik een sterk vermoeden heb, dat mijn webhoster van mijn site, onderdeel van een grotere firma, e-mailadressen verkoopt. Dat zal zeker niet de eerste en laatste zijn. Ik heb dit aan hen opgemerkt, ze gaven geen antwoord daarop - wie zwijgt stem toe - want er zijn ook nog twee andere e-mailadressen verbonden aan deze site, die zijn niet in contact.php opgenomen en die eveneens spam van dezelfden ontvangen.
Nu is het wel zo, dat dit veel minder is geworden, omdat ik de meest hardnekkigen onder hen allen unsubscribed heb. Die heb ik dan ook niet meer ontvangen op de drie e-mailadressen.
Houd er wel rekening mee dat ik nu al wat bezig ben met de PHPmailer, dus het zal allemaal wel wat anders worden voor het contact in deze site in de naaste toekomst.
Ik heb het e-mailadres voor je gewijzigd in een nep-adres.

Zodra je een domeinnaam registreert, ontvang je op info@ spam. En daarnaast ook nog op enkele tientallen tot honderden andere voorspelbare e-mailadressen. Misschien verkoopt je provider je e-mailadressen inderdaad, maar veel waarschijnlijker is dat ze gewoon geraden worden.
Beste Ward van der Put,

Ik begrijp dat het e-mailadres gewijzigd is door jou.
Ik zie nu: [email protected]. Maar ik kan nu toch gewoon de gewone normaal ontvangen, van hen die meer willen weten over mijn boeken en muziek? Dit tot ik iets anders gedaan met voor de contact.php en PHPmailer.

Toevoeging op 29/02/2016 09:26:14:

Ik heb het dus over info@**knip**.nl die die echte lieden daarvoor gebruiken

Toevoeging op 29/02/2016 09:57:31:

Nou, ik ben net wat gezien van mijn hoster, een antwoord:
Echter is uw email adres misbruikt. Dit komt vermoedelijk omdat uw wachtwoord is geraden of omdat een andere doormiddel van exploit op uw computer. Het gaat specifiek om het email adres "test@**knip**.nl".

Received: from cp13.c-panel-server.com ([87.236.102.161])
by primary.spamfilterserver.com with esmtps (TLSv1.2:DHE-RSA-AES256-SHA:256)
(Exim 4.85) (envelope-from <[email protected]>)
id 1aYqem-00022v-L1
for [email protected]; Thu, 25 Feb 2016 08:48:16 +0100
Received: from [41.218.217.225] (port=55793 helo=[192.168.1.4])
by cp13.c-panel-server.com with esmtpa (Exim 4.86)
(envelope-from <[email protected]>) id 1aYqeP-003ZJE-I3
for [email protected]; Thu, 25 Feb 2016 08:48:02 +0100
Message-Id: <[email protected]>
Mime-Version: 1.0
From: Haji Sb <[email protected]>
To: jenny.chow <[email protected]>
Reply-To: [email protected]
Subject: SWIFT USD 44300
Date: Thu, 25 Feb 2016 07:47:36 GMT
Content-Type: multipart/mixed;
Boundary="--=BOUNDARY_225747_IPAU_MIJV_IBRP_BQDV"
X-AuthUser: test@**knip**.nl
X-Filter-ID:


Dat is de reden dus. test@ is er niet, maar die gekke lieden doen dus iets. Wachtwoord is nu veranderd.
Even om verwarring te voorkomen:

Ward heeft je mailadres in de berichten van dit topic aangepast uit oogpunt voor veiligheid in dit forum. Er zijn op internet helaas diverse zoekbotjes actief die mail-adressen op websites (en dus ook op PHPhulp) verzamelen en deze graag gebruiken voor spam-doeleinden. Daar houden wij niet van, en dat is de reden dat we jouw (en anderen) hiertegen willen beschermen.

Uiteraard dien je in jouw eigen script netjes jouw eigen mailadres te gebruiken, maar in het gebruik op forums wordt het aangeraden om een nep-mailadres te gebruiken. Daarom hem ik nogmaals jouw domein even vervangen door "**knip**.nl".
In RFC 2606 Reserved Top Level DNS Names zijn drie domeinnamen gereserveerd voor documentatie- en testdoeleinden: example.com, example.net en example.org. Vandaar dat ik [email protected] heb gebruikt om je echte e-mailadres in de bovenstaande PHP-code te verbergen.

Inhoudelijk, gooi deze BCC er alvast uit:

<?php
     if (isset($_POST['copy']) && $_POST['copy'] == 'true') {
         $header .= 'BCC: ' . $_POST['email'] ."\n";
     }
?>


Bedenk wat een spammer daarmee kan doen: het e-mailadres van een derde invullen. Aangezien je verder $_POST['email'] niet controleert, kunnen daarin zelfs honderden e-mailadressen worden ingevuld. Die ontvangen dan allemaal spam via jouw contactformulier, met jouw e-mailadres als afzender. Jij ziet daarvan ondertussen niets, omdat het BCC's zijn in plaats van CC's.

Reageren