goede dag,

ik heb een php script maar volgens mijn hosting provider is er misbruik van gemaakt en daardoor spam mee verstuurd.

nu vroeg ik me af hoe ik het dan veiliger kan maken, kan iemand me daarmee helpen of is het niet even iets simpels en moet ik me er eerst verder in php verdiepen?

in ieder geval alvast bedankt hier mijn script:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">;
<html xmlns="http://www.w3.org/1999/xhtml">;
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>shout</title>
<style type="text/css">
<!--
#Layer1 {
position:absolute;
width:240px;
height:140px;
z-index:1;
left: 0;
top: 0;
background-color: #333333;
}
#Layer2 {
position:relative;
width:30px;
height:20px;
z-index:2;
background-color: #000000;
padding-top: 5px;
}
.style2 {
font-family: "Trebuchet MS", "Times New Roman", Times, serif;
color: #888;
font-size: 0.8em;
}
-->
</style>
</head>
<body>
<?php
if($_POST['formID']=='contact') {

@extract($_POST);

$naam = stripslashes($naam);
$mail = stripslashes($mail);
$sectie = stripslashes($sectie);
$bericht = $naam." <".$mail."> schreef:\r\n\r\n ".stripslashes($bericht);

$onderwerp = "Contact: afdeling ".$sectie;

mail('[email protected]',$onderwerp,$bericht,"From: $mail");
echo '<META HTTP-EQUIV="Refresh" Content="0; URL=succes.php?formID=contact">';

} elseif($_POST['formID']=='signup') {

@extract($_POST);

$vnaam = stripslashes($vnaam);
$anaam = stripslashes($anaam);
$geb = stripslashes($geb);
$adres = stripslashes($adres);
$woonplaats = stripslashes($woonplaats);
$tel = stripslashes($tel);
$mail = stripslashes($mail);
$talent = stripslashes($talent);
$instrukeus = stripslashes($instrukeus);
$instru = stripslashes($instru);
//$demo = stripslashes($demo);
$motivatie = stripslashes($motivatie);

if($instrukeus=="ja"){
$instrumenten .= " ".$checkbox1.", ".$checkbox2.", ".$checkbox3.", ".$checkbox4.". Andere: ".$instruanders;
}

$bericht =

"Voornaam ".$vnaam. "\r\n" .
"Achternaam ".$anaam. "\r\n" .
"Geb. datum ".$geb. "\r\n" .
"Adres ".$adres. "\r\n" .
"Woonplaats ".$woonplaats. "\r\n" .
"\r\n" .
"Tel ".$tel. "\r\n" .
"Mail ".$mail. "\r\n" .
"\r\n" .
"Talentvorm ".$talent. "\r\n" .
"Speelt instr. ".$instrukeus.": ".$instrumenten. "\r\n".
"Link demo ".$demo. "\r\n".
"Motivatie ".$motivatie."\r\n"

;



mail('[email protected]',"sign-up: $vnaam $anaam",$bericht,"$mail");
echo '<META HTTP-EQUIV="Refresh" Content="0; URL=succes.php?formID=signup">';

} elseif($_POST['formID']=='studio') {

@extract($_POST);

$vnaam = stripslashes($vnaam);
$anaam = stripslashes($anaam);
$geb = stripslashes($geb);
$woonplaats = stripslashes($woonplaats);
$vocalen = stripslashes($vocalen);
$tel = stripslashes($tel);
$mail = stripslashes($mail);
$talent = stripslashes($talent);
$instrukeus = stripslashes($instrukeus);
$instru = stripslashes($instru);
//$demo = stripslashes($demo);
$motivatie = stripslashes($motivatie);

$bericht =

"Voornaam ".$vnaam. "\r\n" .
"Artiest ".$anaam. "\r\n" .
"Geb ".$geb. "\r\n" .
"Woonplaats ".$woonplaats. "\r\n" .
"\r\n" .
"Vocalen ".$vocalen."\r\n".
"Dagen ".$dag1." om ".$tijd1." | ".$dag2." om ".$tijd2."\r\n".
"\r\n" .
"Tel ".$tel. "\r\n" .
"Mail ".$mail. "\r\n" .
"\r\n" .
"Bijzonderheden".$bijz."\r\n"

;



mail('[email protected]',"studio: $anaam $vocalen",$bericht,"$mail");
echo '<META HTTP-EQUIV="Refresh" Content="0; URL=succes.php?formID=signup">';

}
?>
<div id="Layer1">
<div align="center"> <br />
<br />
<br />

<div id="Layer2">
<img src="w8_black.gif" width="16" height="16" />
</div>
<br />
<span class="style2">Wordt verwerkt.... </span>
<p>&nbsp;</p>
</div>
</div>

</body>
</html>
Dit is echt iets wat je moet lezen als je e-mails gaat versturen vanuit php.
Kijk even HIER hoe dat script beveiligd is.
ok bedankt!!!
ik heb hem al een beetje aangepast zou dit al beter zijn??

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">;
<html xmlns="http://www.w3.org/1999/xhtml">;
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>shout</title>
<style type="text/css">
<!--
#Layer1 {
position:absolute;
width:240px;
height:140px;
z-index:1;
left: 0;
top: 0;
background-color: #333333;
}
#Layer2 {
position:relative;
width:30px;
height:20px;
z-index:2;
background-color: #000000;
padding-top: 5px;
}
.style2 {
font-family: "Trebuchet MS", "Times New Roman", Times, serif;
color: #888;
font-size: 0.8em;
}
-->
</style>
<?
ob_start(); // Voor Cookie setten


// Headers zetten zodat de de inhoud niet word gecashed
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");


// Config Gedeelte
$site = "http://www.temp.com";; // Site waarnaar je terug gaat als je een bericht hebt achtergelaten
$wm_email = "[email protected]"; // waarheen mail verzenden
$Anti_Spam = "5"; // Anti Spam Tijd in Minuten ( Voer "0" om de Spam Beveiliging uit te zetten )
$ip = $_SERVER['REMOTE_ADDR']; // IP van de verstuurder
$host = gethostbyaddr($ip); // Host van verstuurder


//Contact form
if($_POST['formID']=='contact')
{
@extract($_POST);

$naam = stripslashes($naam);
$mail = stripslashes($mail);
$sectie = stripslashes($sectie);

// Headers
$headers = "From: \"Contact Formulier\" <".$mail.">\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: text/plain; charset='iso-8859-1'\n";

//Bericht opmaken
$bericht = $naam." <".$mail."> schreef:\r\n\r\n ".stripslashes($bericht);

//mail sturen
mail($wm_email,$onderwerp,$bericht,$headers);

//cookie zetten tegen spam
setcookie("mailformulier",1,time()+($Anti_Spam*60));

//als mail verzonden is
echo '<META HTTP-EQUIV="Refresh" Content="0; URL=succes.php?formID=contact">';

}
//Sign Up Form
else if($_POST['formID']=='signup')
{
@extract($_POST);

$vnaam = stripslashes($vnaam);
$anaam = stripslashes($anaam);
$geb = stripslashes($geb);
$adres = stripslashes($adres);
$woonplaats = stripslashes($woonplaats);
$tel = stripslashes($tel);
$mail = stripslashes($mail);
$talent = stripslashes($talent);
$instrukeus = stripslashes($instrukeus);
$instru = stripslashes($instru);
//$demo = stripslashes($demo);
$motivatie = stripslashes($motivatie);

if($instrukeus=="ja"){
$instrumenten .= " ".$checkbox1.", ".$checkbox2.", ".$checkbox3.", ".$checkbox4.". Andere: ".$instruanders;
}

// Headers
$headers = "From: \"Contact Formulier\" <".$mail.">\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: text/plain; charset='iso-8859-1'\n";

//Bericht opmaken
$bericht = "Voornaam ".$vnaam. "\r\n" .
"Achternaam ".$anaam. "\r\n" .
"Geb. datum ".$geb. "\r\n" .
"Adres ".$adres. "\r\n" .
"Woonplaats ".$woonplaats. "\r\n" .
"\r\n" .
"Tel ".$tel. "\r\n" .
"Mail ".$mail. "\r\n" .
"\r\n" .
"Talentvorm ".$talent. "\r\n" .
"Speelt instr. ".$instrukeus.": ".$instrumenten. "\r\n".
"Link demo ".$demo. "\r\n".
"Motivatie ".$motivatie."\r\n";

//Mail versturen
mail($wm_email,"sign-up: ".$vnaan." ".$anaam,$bericht,$headers);

//cookie zetten tegen spam
setcookie("mailformulier",1,time()+($Anti_Spam*60));

//als mail verzonden is
echo '<META HTTP-EQUIV="Refresh" Content="0; URL=succes.php?formID=signup">';

}
//Studio form
else if($_POST['formID']=='studio')
{

@extract($_POST);

$vnaam = stripslashes($vnaam);
$anaam = stripslashes($anaam);
$geb = stripslashes($geb);
$woonplaats = stripslashes($woonplaats);
$vocalen = stripslashes($vocalen);
$tel = stripslashes($tel);
$mail = stripslashes($mail);
$talent = stripslashes($talent);
$instrukeus = stripslashes($instrukeus);
$instru = stripslashes($instru);
//$demo = stripslashes($demo);
$motivatie = stripslashes($motivatie);

// Headers
$headers = "From: \"Contact Formulier\" <".$mail.">\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: text/plain; charset='iso-8859-1'\n";

//Bericht opmaken
$bericht = "Voornaam ".$vnaam. "\r\n" .
"Artiest ".$anaam. "\r\n" .
"Geb ".$geb. "\r\n" .
"Woonplaats ".$woonplaats. "\r\n" .
"\r\n" .
"Vocalen ".$vocalen."\r\n".
"Dagen ".$dag1." om ".$tijd1." | ".$dag2." om ".$tijd2."\r\n".
"\r\n" .
"Tel ".$tel. "\r\n" .
"Mail ".$mail. "\r\n" .
"\r\n" .
"Bijzonderheden".$bijz."\r\n";

//Mail versturen
mail($wm_email,"studio: ".$anaan." ".$vocalen,$bericht,$headers);

//cookie zetten tegen spam
setcookie("mailformulier",1,time()+($Anti_Spam*60));

//als mail verzonden is
echo '<META HTTP-EQUIV="Refresh" Content="0; URL=succes.php?formID=signup">';

}

?>

<div id="Layer1">
<div align="center"> <br />
<br />
<br />

<div id="Layer2">
<img src="w8_black.gif" width="16" height="16" />
</div>
<br />
<span class="style2">Wordt verwerkt.... </span>
<p>&nbsp;</p>
</div>
</div>

</body>
</html>
Evt. een CAPTCHA erop zetten...
YPM schreef op 19.02.2007 18:59
Evt. een CAPTCHA erop zetten...


Captcha helpt niet tegen mail injection.

@ Topic starter, Kijk even in het script hoe ik elk veld controleer, vooral even naar die eregi waarin <> etc niet mag voorkomen in de ingevoerde string. Zo kan een kwaadwillende ook geen mail injection uitvoeren waardoor ze spam kunnen versturen.
@thijs, leg mij uit waarom <> niet zou mogen voorkomen ?

@TS
Je hebt blijkbaar niets gelezen uit de link die ik je gaf, het gaat er om dat iemand geen \r en/of \n mag ingeven, headers worden hierdoor (nieuwe lijn tekens) gescheiden, als iemand zo'n teken dus invoegt kan hij/zij zelf headers toevoegen, bijvoorbeeld meer ontvangers, etc etc.

Reageren