Ik probeer e-mail injection af te vangen met controle op nieuwe regels in
het veld 'From' met:
preg_match("/(%0A|%0D|\n+|\r+)/i", $sender);
Is dat voldoende of moet je *ieder* veld dat uit het formulier komt testen?
--
Nico
Likes: 0
Ik probeer e-mail injection af te vangen met controle op nieuwe regels in
het veld 'From' met:
preg_match("/(%0A|%0D|\n+|\r+)/i", $sender);
Is dat voldoende of moet je *ieder* veld dat uit het formulier komt testen?
--
Nico
Op Mon, 01 Dec 2008 11:56:29 +0100 schreef Nico Schuyt <nschuyt gmail
<"com>">:
> Ik probeer e-mail injection af te vangen met controle op nieuwe regels in
> het veld 'From' met:
> preg_match("/(%0A|%0D|\n+|\r+)/i", $sender);
>
> Is dat voldoende of moet je *ieder* veld dat uit het formulier komt
> testen?
Omdraaiing: waarom zou je alleen het From-veld willen controleren? Het
lijkt mij dat je /elke/ user-input die je ergens in de headers plakt zou
moeten bekijken.
--
Ronald
Ronald Klip wrote:
> Nico Schuyt
>> Ik probeer e-mail injection af te vangen met controle op nieuwe
>> regels in het veld 'From' met:
>> preg_match("/(%0A|%0D|\n+|\r+)/i", $sender);
>> Is dat voldoende of moet je *ieder* veld dat uit het formulier komt
>> testen?
> Omdraaiing: waarom zou je alleen het From-veld willen controleren? Het
> lijkt mij dat je /elke/ user-input die je ergens in de headers plakt
> zou moeten bekijken.
Bedankt voor je reactie Ronald.
Je hebt natuurlijk gelijk, maar op alle e-mail forms die ik gebruik is
alleen 'From' een gebruikersinvoer die in de header komt. Mime, Return-Path,
CC, Bcc etc worden door het script toegevoegd.
Het ging me erom of ook een veld als 'Postcode' een risico kan opleveren.
--
Nico
Nico Schuyt schreef:
> Ik probeer e-mail injection af te vangen met controle op nieuwe
> regels in het veld 'From' met: preg_match("/(%0A|%0D|\n+|\r+)/i",
> $sender);
>
> Is dat voldoende of moet je *ieder* veld dat uit het formulier komt
> testen?
Trouwens, beschik je over PHP 5?
In dit geval kun je namelijk de php-functie 'filter_var' gebruiken, zie:
<http://nl.php.net/manual/en/function.filter-var.php>.
--
mw
Op Mon, 01 Dec 2008 15:50:50 +0100 schreef Nico Schuyt <nschuyt gmail
<"com>">:
> Ronald Klip wrote:
>> Nico Schuyt
>
>>> Ik probeer e-mail injection af te vangen met controle op nieuwe
>>> regels in het veld 'From' met:
>>> preg_match("/(%0A|%0D|\n+|\r+)/i", $sender);
>>> Is dat voldoende of moet je *ieder* veld dat uit het formulier komt
>>> testen?
>
>> Omdraaiing: waarom zou je alleen het From-veld willen controleren? Het
>> lijkt mij dat je /elke/ user-input die je ergens in de headers plakt
>> zou moeten bekijken.
>
> Bedankt voor je reactie Ronald.
> Je hebt natuurlijk gelijk, maar op alle e-mail forms die ik gebruik is
> alleen 'From' een gebruikersinvoer die in de header komt. Mime,
> Return-Path,
> CC, Bcc etc worden door het script toegevoegd.
> Het ging me erom of ook een veld als 'Postcode' een risico kan opleveren.
Aha, zo. Het lijkt mij dat je veilig zit als dat veld alleen in de body
van de mail komt; die wordt immers niet geparst door de mailserver.
Hooguit zou je nog moeten kijken of er geen javascript toegevoegd wordt
(als het een HTML-mailtje wordt). Hoewel een beetje slimme gebruiker geen
javascript toestaat in e-mail.
--
Ronald
mw wrote:
> Nico Schuyt schreef:
>> Ik probeer e-mail injection af te vangen met controle op nieuwe
>> regels in het veld 'From' met: preg_match("/(%0A|%0D|\n+|\r+)/i",
>> $sender);
>> Is dat voldoende of moet je *ieder* veld dat uit het formulier komt
>> testen?
>
> Trouwens, beschik je over PHP 5?
> In dit geval kun je namelijk de php-functie 'filter_var' gebruiken,
> zie: <http://nl.php.net/manual/en/function.filter-var.php>.
Bedankt voor de tip mw. De functie is nieuw voor me.
Je gebruikt dat voor e-mail validatie?
Is het beter dan iets als
eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$", $strEmail)) ?
--
Nico
Ronald Klip wrote:
> Nico Schuyt
>> Ronald Klip wrote:
>>> Nico Schuyt
>>>> Ik probeer e-mail injection af te vangen met controle op nieuwe
>>>> regels in het veld 'From' met:
>>>> preg_match("/(%0A|%0D|\n+|\r+)/i", $sender);
>>>> Is dat voldoende of moet je *ieder* veld dat uit het formulier komt
>>>> testen?
>>
>>> Omdraaiing: waarom zou je alleen het From-veld willen controleren?
>>> Het lijkt mij dat je /elke/ user-input die je ergens in de headers
>>> plakt zou moeten bekijken.
>>
>> Bedankt voor je reactie Ronald.
>> Je hebt natuurlijk gelijk, maar op alle e-mail forms die ik gebruik
>> is alleen 'From' een gebruikersinvoer die in de header komt. Mime,
>> Return-Path,
>> CC, Bcc etc worden door het script toegevoegd.
>> Het ging me erom of ook een veld als 'Postcode' een risico kan
>> opleveren.
>
> Aha, zo. Het lijkt mij dat je veilig zit als dat veld alleen in de
> body van de mail komt; die wordt immers niet geparst door de
> mailserver. Hooguit zou je nog moeten kijken of er geen javascript
> toegevoegd wordt (als het een HTML-mailtje wordt). Hoewel een beetje
> slimme gebruiker geen javascript toestaat in e-mail.
Dan zit ik wel goed :-) Ik vraag me alleen af waarom iemand me dan af en toe
iets stuurt met:
Naam: Mevrouw CxBgqWXf
Adres: bMVpezyXDywtPjP
Plaats: ByaAZVGjP
Telefoon: rgMHguHUNLdUxczZBvL
Fax: badXFIgQbp
E-mail: ndcysv@deanqv.com
Bijlage:
Vraag/Opm.: KaJfof gfpfwrhkydlm,
jrcfrdbvrczq,
[link=http://qcyzfugjhngi.com/]qcyzfugjhngi[/link], http://xjelxygxafex.com/
--
Nico
Nico Schuyt:
> Ronald Klip wrote:
> Hoewel een beetje
> > slimme gebruiker geen javascript toestaat in e-mail.
>
> Dan zit ik wel goed :-) Ik vraag me alleen af waarom iemand me dan af en toe
> iets stuurt met:
> Naam: Mevrouw CxBgqWXf
> Adres: bMVpezyXDywtPjP [....]
Dat zijn gecodeerde dreigbrieven, Nico. Zuinig op zijn!
--
Erick
Nico Schuyt schreef:
>>> Ik probeer e-mail injection af te vangen met controle op nieuwe
>>> regels in het veld 'From' met: preg_match("/(%0A|%0D|\n+|\r+)/i",
>>> $sender); Is dat voldoende of moet je *ieder* veld dat uit het
>>> formulier komt testen?
>> Trouwens, beschik je over PHP 5? In dit geval kun je namelijk de
>> php-functie 'filter_var' gebruiken, zie:
>> <http://nl.php.net/manual/en/function.filter-var.php>.
>
> Bedankt voor de tip mw. De functie is nieuw voor me. Je gebruikt dat
> voor e-mail validatie?
Zojuist voor het eerst, maar al snel overgestapt op:
> eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",
> $strEmail)) ?
.... omdat de serverruimte waar de website in kwestie geen PHP 5 draait,
maar anders had ik zeker 'filter_var' gebruikt, net zoals ik liever
checkdate() gebruik dan een eigen regexp die '31 februari 2001' een
geldige datum vindt, of fputcsv die standaard esceept.
--
mw
<snip
> Dan zit ik wel goed :-) Ik vraag me alleen af waarom iemand me dan af en toe
> iets stuurt met:
> Naam: Mevrouw CxBgqWXf
> Adres: bMVpezyXDywtPjP
> Plaats: ByaAZVGjP
> Telefoon: rgMHguHUNLdUxczZBvL
> Fax: badXFIgQbp
> E-mail: ndcysv@deanqv.com
> Bijlage:
> Vraag/Opm.: KaJfof gfpfwrhkydlm,
> jrcfrdbvrczq,
> [link=http://qcyzfugjhngi.com/]qcyzfugjhngi[/link], http://xjelxygxafex.com/
Dat lijken me 'spam botjes' die langs komen en je formulier proberen te
misbruiken.
[url] [/ur] is BBcode
http://nl.wikipedia.org/wiki/BBCode
Dus het spam botje denkt misschien dat ie op een forum is beland ipv op
een email pagina?
Oplossing hiervoor lijkt me een captcha te implementeren in je formulier..
Simpele/Elegante php captha (met gd):
Uitleg:
http://www.joriso.nl/verhaaltjes-webdevelopment-captcha-2.html
Code:
http://www.joriso.nl/verhaaltjes-webdevelopment-captcha-2.html
Werkt op een van mijn sites helemaal prima, nooit meer last van spambots
in t gastenboek en geen troep meer in de mail vanaf de feedback pagina..
--
Bas Janssen /. bas@dds.nl /. www.dds.nl /. PGP#0x22FA2C9F
Great words won't cover ugly actions and good frames won't save bad
paintings. - Dennis Lyxzen
Link foutje:
> Uitleg: (moet zijn)
> http://www.joriso.nl/verhaaltjes-web...captcha-1.html
Erick T. Barkhuis wrote:
> Nico Schuyt:
>> vraag me alleen af waarom iemand me dan
>> af en toe iets stuurt met:
>> Naam: Mevrouw CxBgqWXf
>> Adres: bMVpezyXDywtPjP [....]
> Dat zijn gecodeerde dreigbrieven, Nico. Zuinig op zijn!
Hmmm, wat het ook zijn, ik krijg altijd een heel onbehagelijk gevoel als ik
zulke dingen ontvang :-)
--
Nico
Nico Schuyt <nschuyt>:
> Is het beter dan iets als
> eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$", $strEmail)) ?
Jammer voor mensen met een .name of .info adres, of die (zoals ik)
accolades gebruiken (alhoewel dat wel weer goed werkt tegen spammers
--
robert
Bas Janssen wrote:
> Nico Schuyt
>> Ik vraag me alleen af waarom iemand me dan
>> af en toe iets stuurt met:
>> Naam: Mevrouw CxBgqWXf
>> ..
>> E-mail: ndcysv@deanqv.com
>> Vraag/Opm.: KaJfof gfpfwrhkydlm,
>> jrcfrdbvrczq,
>> [link=http://qcyzfugjhngi.com/]qcyzfugjhngi[/link],
>> http://xjelxygxafex.com/
>
> Dat lijken me 'spam botjes' die langs komen en je formulier proberen
> te misbruiken.
> [url] [/ur] is BBcode
> http://nl.wikipedia.org/wiki/BBCode
Weer wat nieuws geleerd :-)
> Dus het spam botje denkt misschien dat ie op een forum is beland ipv
> op een email pagina?
Als het met spam te maken heeft denk ik aan een commercieel doel. Wat zou
een spammer te winnen hebben met de boodschap 'KaJfof gfpfwrhkydlm'??
> Oplossing hiervoor lijkt me een captcha te implementeren in je
> formulier..
> Simpele/Elegante php captha (met gd):
> Uitleg (gecorrigeerde url):
> http://www.joriso.nl/verhaaltjes-webdevelopment-captcha-1.html
> Code:
> http://www.joriso.nl/verhaaltjes-webdevelopment-captcha-2.html
>
> Werkt op een van mijn sites helemaal prima, nooit meer last van
> spambots in t gastenboek en geen troep meer in de mail vanaf de
> feedback pagina..
Bedankt Bas!
--
Nico
robert wrote:
> Nico Schuyt <nschuyt>:
>> Is het beter dan iets als
>> eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",
>> $strEmail)) ?
> Jammer voor mensen met een .name of .info adres, of die (zoals ik)
> accolades gebruiken (alhoewel dat wel weer goed werkt tegen spammers
>
Nieuwe poging :-)
//http://www.ilovejackdaniels.com/php/email-address-validation/
function checkmail($email) {
// First, we check that there's one @ symbol, and that the lengths are
right
if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
// Email invalid because wrong number of characters in one section, or
wrong number of @ symbols.
return false;
}
// Split it into sections to make life easier
$email_array = explode("@", $email);
$local_array = explode(".", $email_array[0]);
for ($i = 0; $i < sizeof($local_array); $i++) {
//if
(!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.{0,63})|(\"[^(\\|\")]{0,62}\"))$",
$local_array[$i])) {
if
(!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$",
$local_array[$i])) { //return false;
return false;
}
}
if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) {
// Check if domain is IP. If not, it should be valid domain name
$domain_array = explode(".", $email_array[1]);
if (sizeof($domain_array) < 2) {
return false;
}
for ($i = 0; $i < sizeof($domain_array); $i++) {
if
(!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$",
$domain_array[$i])) {
return false;
//return "Fout 2";
}
}
}
return true;
}
Doet 't ook met abc983%_-{}@qwertuio.extralang
--
Nico