Rainman
%Europe/Berlin %680 %2005, 17:20
Hallo scripters,
De laatste tijd heb ik, en met mij nog vele anderen, last van "email injection" in mijn php email formulieren. Zelf ben ik geen scripter, dus ik zou graag wat hulp willen krijgen.
Ik heb veel over dit onderwerp gelezen, maar de "oplossingen" die worden gegeven blijken niet of maar voor even te werken òf ik kan ze niet implementeren in mijn huidige script (dankzij mijn gebrek aan kennis van php).
Nu dacht ik dat het volgende mijn probleem zou kunnen oplossen:
ik controleer bijvoorbeeld het tekstveld "naam" om te zien of daar een @ wordt gebruikt. Zo ja, krijg je een foutmelding. Zo nee, dan kan het formulier verzonden worden.
Dit kan natuurlijk bij elk tekstveld worden gedaan, maar ik heb geen idee hoe ik hieraan moet beginnen.
Heeft iemand van jullie tijd en zin om dit stukje code te schrijven?
Hieronder mijn huidige code (tabellen etc heb ik weggehaald uit de code:
<?php
$thankyou = "Bedankt voor uw bericht. <br /><br />
Indien nodig, krijgt u zo spoedig mogelijk bericht terug<br /><br />";
$errors = "<span class=\"red_text\">";
$colspan = "";
$send = "yes";
$start = 0;
$end = 3;
if (@!$_POST['printer']) {
$yesStatus = "checked";
$noStatus = "";
} else {
if ($_POST['contact'] == "Yes"){
$yesStatus = "checked";
$noStatus = "";
} else {
$yesStatus = "";
$noStatus = "checked";
}
}
$formBlock =
"<form method=\"post\" action=\"$_SERVER[PHP_SELF]\">
Voor vragen, een vrijblijvende offerte, suggesties, op- of aanmerkingen, kunt u het onderstaande formulier invullen. Velden met een * zijn verplicht.<br /><br /><br /></td>
Naam: * <input type=\"text\" name=\"name\" id=\"name\" class=\"textfield\" size=\"50\" value=\"$_POST[name]\" />
E-mail: * <input type=\"text\" name=\"uEmail\" id=\"uEmail\" class=\"textfield\" size=\"50\" maxlength=\"50\" value=\"$_POST[uEmail]\" />
Bedrijfsnaam: <input name=\"company\" type=\"text\" class=\"textfield\" id=\"company\" size=\"50\" maxlength=\"50\" value=\"$_POST[company]\" />
Woonplaats: <input name=\"city\" type=\"text\" class=\"textfield\" id=\"city\" size=\"50\" maxlength=\"50\" value=\"$_POST[city]\" />
Telefoonnummer: <input name=\"phone\" type=\"text\" class=\"textfield\" id=\"phone\" size=\"50\" maxlength=\"50\" value=\"$_POST[phone]\" />
Faxnummer: <input name=\"fax\" type=\"text\" class=\"textfield\" id=\"fax\" size=\"50\" maxlength=\"50\" value=\"$_POST[fax]\" />
Bericht: * <textarea name=\"msg\" id=\"msg\" cols=\"40\" rows=\"6\" value=\"$_POST[msg]\" class=\"messagefield\"></textarea>
<input name=\"B2\" type=\"reset\" class=\"text\" value=\"Invoer wissen\">
<input name=\"B1\" type=\"submit\" class=\"text\" onClick=\"submit\" value=\"Verzenden\">
<input type=\"hidden\" name=\"printer\" id=\"printer\" value=\"paper\" />
</form>";
if (@!$_POST['printer']) {
echo ("$formBlock");
} else {
if (!$_POST['name']) {
$errors .= "Vul a.u.b. uw naam in.<br />";
$send = "no";
}
if ($_POST['uEmail']) {
if (!strstr($_POST['uEmail'], "@") && !strstr($_POST['uEmail'], ".")) {
$errors .= "Vul a.u.b. een geldig email adres in.<br />";
$send = "no";
}
}
if (!$_POST['uEmail']) {
$errors .= "Vul a.u.b. een geldig email adres in.<br />";
$send = "no";
}
if (!$_POST['msg']) {
$errors .= "Vul a.u.b. uw vraag of opmerking in bij \"Bericht\".<br />";
$send = "no";
}
$errors .= "</span>";
if ($send != "no") {
$name = addslashes($name);
$uEmail = addslashes($uEmail);
$company = addslashes($company);
$city = addslashes($city);
$phone = addslashes($phone);
$fax = addslashes($fax);
$msg = addslashes($msg);
$to = "mijn@email.nl";
$subject = "Informatie aanvraag";
$message =
"Naam:
$_POST[name]
E-mail:
$_POST[uEmail]
Bedrijf:
$_POST[company]
Woonplaats:
$_POST[city]
Telefoon:
$_POST[phone]
Fax:
$_POST[fax]
$_POST[name] Heeft het volgende bericht gestuurd:
-------------------------
$_POST[msg]";
mail($to, $subject, $message, "From: \"$_POST[name]\" <$_POST[uEmail]>\r\nReply-To: \"$_POST[name]\" <$_POST[uEmail]>\r\nX-Mailer: chfeedback.php 2.04" );
echo ("$thankyou");
} else {
echo ("$errors" . "$formBlock");
}
}
?>
De laatste tijd heb ik, en met mij nog vele anderen, last van "email injection" in mijn php email formulieren. Zelf ben ik geen scripter, dus ik zou graag wat hulp willen krijgen.
Ik heb veel over dit onderwerp gelezen, maar de "oplossingen" die worden gegeven blijken niet of maar voor even te werken òf ik kan ze niet implementeren in mijn huidige script (dankzij mijn gebrek aan kennis van php).
Nu dacht ik dat het volgende mijn probleem zou kunnen oplossen:
ik controleer bijvoorbeeld het tekstveld "naam" om te zien of daar een @ wordt gebruikt. Zo ja, krijg je een foutmelding. Zo nee, dan kan het formulier verzonden worden.
Dit kan natuurlijk bij elk tekstveld worden gedaan, maar ik heb geen idee hoe ik hieraan moet beginnen.
Heeft iemand van jullie tijd en zin om dit stukje code te schrijven?
Hieronder mijn huidige code (tabellen etc heb ik weggehaald uit de code:
<?php
$thankyou = "Bedankt voor uw bericht. <br /><br />
Indien nodig, krijgt u zo spoedig mogelijk bericht terug<br /><br />";
$errors = "<span class=\"red_text\">";
$colspan = "";
$send = "yes";
$start = 0;
$end = 3;
if (@!$_POST['printer']) {
$yesStatus = "checked";
$noStatus = "";
} else {
if ($_POST['contact'] == "Yes"){
$yesStatus = "checked";
$noStatus = "";
} else {
$yesStatus = "";
$noStatus = "checked";
}
}
$formBlock =
"<form method=\"post\" action=\"$_SERVER[PHP_SELF]\">
Voor vragen, een vrijblijvende offerte, suggesties, op- of aanmerkingen, kunt u het onderstaande formulier invullen. Velden met een * zijn verplicht.<br /><br /><br /></td>
Naam: * <input type=\"text\" name=\"name\" id=\"name\" class=\"textfield\" size=\"50\" value=\"$_POST[name]\" />
E-mail: * <input type=\"text\" name=\"uEmail\" id=\"uEmail\" class=\"textfield\" size=\"50\" maxlength=\"50\" value=\"$_POST[uEmail]\" />
Bedrijfsnaam: <input name=\"company\" type=\"text\" class=\"textfield\" id=\"company\" size=\"50\" maxlength=\"50\" value=\"$_POST[company]\" />
Woonplaats: <input name=\"city\" type=\"text\" class=\"textfield\" id=\"city\" size=\"50\" maxlength=\"50\" value=\"$_POST[city]\" />
Telefoonnummer: <input name=\"phone\" type=\"text\" class=\"textfield\" id=\"phone\" size=\"50\" maxlength=\"50\" value=\"$_POST[phone]\" />
Faxnummer: <input name=\"fax\" type=\"text\" class=\"textfield\" id=\"fax\" size=\"50\" maxlength=\"50\" value=\"$_POST[fax]\" />
Bericht: * <textarea name=\"msg\" id=\"msg\" cols=\"40\" rows=\"6\" value=\"$_POST[msg]\" class=\"messagefield\"></textarea>
<input name=\"B2\" type=\"reset\" class=\"text\" value=\"Invoer wissen\">
<input name=\"B1\" type=\"submit\" class=\"text\" onClick=\"submit\" value=\"Verzenden\">
<input type=\"hidden\" name=\"printer\" id=\"printer\" value=\"paper\" />
</form>";
if (@!$_POST['printer']) {
echo ("$formBlock");
} else {
if (!$_POST['name']) {
$errors .= "Vul a.u.b. uw naam in.<br />";
$send = "no";
}
if ($_POST['uEmail']) {
if (!strstr($_POST['uEmail'], "@") && !strstr($_POST['uEmail'], ".")) {
$errors .= "Vul a.u.b. een geldig email adres in.<br />";
$send = "no";
}
}
if (!$_POST['uEmail']) {
$errors .= "Vul a.u.b. een geldig email adres in.<br />";
$send = "no";
}
if (!$_POST['msg']) {
$errors .= "Vul a.u.b. uw vraag of opmerking in bij \"Bericht\".<br />";
$send = "no";
}
$errors .= "</span>";
if ($send != "no") {
$name = addslashes($name);
$uEmail = addslashes($uEmail);
$company = addslashes($company);
$city = addslashes($city);
$phone = addslashes($phone);
$fax = addslashes($fax);
$msg = addslashes($msg);
$to = "mijn@email.nl";
$subject = "Informatie aanvraag";
$message =
"Naam:
$_POST[name]
E-mail:
$_POST[uEmail]
Bedrijf:
$_POST[company]
Woonplaats:
$_POST[city]
Telefoon:
$_POST[phone]
Fax:
$_POST[fax]
$_POST[name] Heeft het volgende bericht gestuurd:
-------------------------
$_POST[msg]";
mail($to, $subject, $message, "From: \"$_POST[name]\" <$_POST[uEmail]>\r\nReply-To: \"$_POST[name]\" <$_POST[uEmail]>\r\nX-Mailer: chfeedback.php 2.04" );
echo ("$thankyou");
} else {
echo ("$errors" . "$formBlock");
}
}
?>