Autor Zpráva
HonzaH2
Profil
Chtěl bych poprosit o radu. Poskytovatelem webového prostoru mi bylo zablokováno odesílání mailu přes webové rozhraní, protože nějaký spammer zneužíval skript, který slouží k odesílání zpráv prostřednictvím formuláře (klasický kontaktní formulář).

Poskytovatel webového prostoru mi sdělil následující:
evidentne se jedna o spatne zabezpeceny skript, skrze ktery se nektery spammer dostal do Vasi prezentace. Je potreba si hlidat predavane hodnoty v promenych, treba regularni vyrazy.

Můj skript pro formulář vypadá takto:
<?
if ($odesli=="ok") {
if ($odmail=="") $odmail="neuvedl.mail@XXXXX.cz";
$text = "Jméno: " . $jmeno . " Telefon: " . $telefon . " E-mail: " . $mail . " Text zprávy: " . $zprava;
if (mail("XXXX@XXXX.cz","Formular - napiste nam",$text,"From: <$odmail>"))
echo "<font color=#C05B1E size=3>Zpráva byla úspěšně odeslána.</font>";
else "<font color=#C05B1E size=3>Zprávu se nepodařilo odeslat</font>";
}
?>

Jak je možné ten skript zabezpečit? Příliš zdatný v PHP nejsem a netuším, co znamená pojem "regulérní výrazy", tedy nevím jak to zabezpečit.

Předem díky
Honza
Pavel Strejček
Profil
Ne "regulérní", ale regulární výrazy. Jde to i bez nich. Hlavičky e-mailu se dají jednoduše podvrhnout. Více informací třeba zde http://php.vrana.cz/e-mailovy-formular.php. Je třeba hlídat, aby v údajích, které zadává uživatel se nemohly objevit hlavičky e-mailu. Například je možné odstranit všechny znaky pro nový řádek "\r" a "\n" ze všeho kromě body mailu.

Pro regulární výrazy hledej v manuálu preg_replace().
HonzaH2
Profil
to: Pavel Strejček

Děkuji za radu a za odkaz, velmi mi to pomohlo. To je trašný, jak snadno lze ten kontaktní formulář zneužít. Jdu s tím něco udělat :-)
Toto téma je uzamčeno. Odpověď nelze zaslat.