Re: [PHP] mail functie veilig?
Op Tue, 05 Oct 2004 23:28:20 +0200, schreef Arjen Haayman:
> nmp wrote:
>>>Tenzij anders vermeld in de handleiding, zou ik er nooit vanuit gaan
>>>dat een PHP-functie 'veilig' is. In dit geval zou ik dus zeker de
>>>$_REQUEST-waarden controleren.
>>
>>
>> Inderdaad, in dit geval zeker omdat het requestwaarden zijn, maar als je
>> die maar controleert dan lijkt me de aanroep van de functie beslist wel
>> veilig.
> Welke controles zal ik uitvoeren?
> Het veiligst is om alleen een set toegestane karakters door te laten,
> maar welke set zou dat dan moeten zijn?
Alle ASCII tekens met een waarde van 32 (spatie) of hoger kun je gerust
accepteren in headervelden.
> Weet iemand hoe je mail() kunt misbruiken? (de server gebruikt sendmail).
>
> function send_mail()
> {
> global $naam, $onderwerp, $email, $bericht;
> mail( "ik@mijndomein.nl", #<--- geen exploit mogelijk??
> "[vraag] $onderwerp", #<--- idem?
> $bericht, #<--- idem?
> "From: $naam <$email>\n"); /* <---- Mogelijk dat hier extra
> headers aan toegevoegd kunnen worden? Hoe te voorkomen? */
Voor headergegevens (zoals onderwerp, geadresseerde, afzender) evt. een
max. lengte hanteren. 100 zal meestal wel werken, evt. bufferproblemen
treden meestal pas op bij meerdere honderden karakters. Sowieso strippen
van ongewenste karakters (ASCII beneden 32). Maar zaken zoals line feed,
carriage return, tab laat je natuurlijk wel staan in je $bericht.
E-mailadressen checken op geldigheid en evt. zelfs via SMTP checken of ze
werkelijk bestaan (daar zijn routines voor, heb ik nu niet bij de hand).
Verder vraag ik me af waarom je het from: adres uit een request zou moeten
lezen. Voordat iemand een mailtje mag sturen is-ie toch al
ingelogd/aangemeld neem ik aan? Dan kun je dat adres uit zijn
accountgegevens halen.
Maar ja, ik weet ook niet wat voor toepassing je eigenlijk bouwt.
Re: [PHP] mail functie veilig?
Op Tue, 05 Oct 2004 23:32:46 +0200, schreef Rene Pijlman:
> Matthijs de Z:
>>>Is het nodig om de invoer voor PHP's mail() functie te controleren op
>>>onveilige code of doet de mail-functie dat voor je?
> [...]
>>Naast de vele opmerkingen die je waarschijnlijk zal krijgen en die veel
>>zinniger zullen zijn dan die van mij...ik zou er ook even een referrer check
>>in bouwen. Anders kan iedereen mailen via dat script.
>
> Dit waag ik tegen te spreken. De referer kan client-side vervalst worden
> en is dus van nul en generlei waarde als het om veiligheid gaat.
Noem het maar vervalst. Ik vind dat typisch een geval van "best practice"
vanuit privacy oogpunt, om een browser *geen* referer mee te laten
sturen. Raad ik iedereen aan.
Re: [PHP] mail functie veilig?
nmp:
>Rene Pijlman:
>De referer kan client-side vervalst worden en is dus van nul en generlei
>waarde als het om veiligheid gaat.
>
>Noem het maar vervalst. Ik vind dat typisch een geval van "best practice"
>vanuit privacy oogpunt, om een browser *geen* referer mee te laten
>sturen. Raad ik iedereen aan.
Ah ja, mee eens, maar _geen_ referer zou het probleem niet moeten zijn.
Daar houdt elke applicatie als het goed is rekening mee. Maar vertrouwen
op de juistheid van de referer die er wel is, dat is het probleem.
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Re: [PHP] mail functie veilig?
Op Wed, 06 Oct 2004 00:45:09 +0200, schreef Rene Pijlman:
> nmp:
>>Rene Pijlman:
>>De referer kan client-side vervalst worden en is dus van nul en generlei
>>waarde als het om veiligheid gaat.
>>
>>Noem het maar vervalst. Ik vind dat typisch een geval van "best
>>practice" vanuit privacy oogpunt, om een browser *geen* referer mee te
>>laten sturen. Raad ik iedereen aan.
>
> Ah ja, mee eens, maar _geen_ referer zou het probleem niet moeten zijn.
> Daar houdt elke applicatie als het goed is rekening mee. Maar vertrouwen
> op de juistheid van de referer die er wel is, dat is het probleem.
Juist, maar hoe dan ook is die referer check dus onzin - zoals je al
aangaf. Dan kan men toch beter iets doen met een PHP sessie of iets
dergelijks.
Of gewoon niet van die algemene mail dingesen maken. Ik maak wel eens een
mail formuliertje in PHP maar dat is dan meestal om met de eigenaar van de
site in contact te komen. Adres van de geadresseerde is dus hard gecodeerd
of door middel van een include bestandje gedefinieerd.
Een formuliertje waarmee men zomaar onder elke willekeurige naam naar elke
willekeurige ontvanger kan sturen lijkt me echt niet meer van deze tijd,
zeg maar.
Of je moet misschien een mixmaster remailer hebben, dan heeft het wel weer
iets moois :)
Re: [PHP] mail functie veilig?
nmp <no@mail.please> wrote in
news:pan.2004.10.05.22.23.16.579088@mail.please:
> Voor headergegevens (zoals onderwerp, geadresseerde, afzender) evt.
> een max. lengte hanteren. 100 zal meestal wel werken, evt.
> bufferproblemen treden meestal pas op bij meerdere honderden
> karakters. Sowieso strippen van ongewenste karakters
NEE. Nooit strippen, maar netjes "die" doen wanneer er rommel in zit. Maak
gewoon netjes een specificatie wat *mag* en mep wanneer er iets afwijkt, ga
NOOIT input zitten repareren.
--
John Voorbeeldscripts in Perl:http://johnbokma.com/perl/
Website design: http://johnbokma.com/websitedesign/
Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
Tevreden opdrachtgevers: http://castleamber.com/testimonials.html
Re: [PHP] mail functie veilig?
John Bokma <postmaster@castleamber.com> wrote in message news:<Xns9579CEA925FBAcastleamber@130.133.1.4>...
> Maak
> gewoon netjes een specificatie wat *mag* en mep wanneer er iets afwijkt
Dan nu nogmaals m'n vraag: wat is een veilige set karakters om toe te
staan in de variabelen $naam en $email? Of welke mogen er beslist niet
in voorkomen?
Ik lees her en der dat m.n. het email-adres moeilijk te valideren is,
of is daar ook een PHP-module voor?
BTW: het moge duidelijk zijn dat ik een PHP-newbie ben :-|
Arjen Haayman
Re: [PHP] mail functie veilig?
ahaayman@hotmail.com (Arjen Haayman) wrote in
news:d260151f.0410052238.382c1ca0@posting.google.c om:
> John Bokma <postmaster@castleamber.com> wrote in message
> news:<Xns9579CEA925FBAcastleamber@130.133.1.4>...
>> Maak
>> gewoon netjes een specificatie wat *mag* en mep wanneer er iets
>> afwijkt
>
> Dan nu nogmaals m'n vraag: wat is een veilige set karakters om toe te
> staan in de variabelen $naam en $email? Of welke mogen er beslist niet
> in voorkomen?
Alles onder de spatie zou ik niet toestaan. Geen idee hoe dat zit met
unicode.
> Ik lees her en der dat m.n. het email-adres moeilijk te valideren is,
> of is daar ook een PHP-module voor?
Er is ergens een Perl expressie die erg omvangrijk is, en in de buurt
schijnt te komen :-D
> BTW: het moge duidelijk zijn dat ik een PHP-newbie ben :-|
Laat je brouwsel door iemand nalopen die de nodige PHP kennis heeft.
--
John Voorbeeldscripts in Perl:http://johnbokma.com/perl/
Website design: http://johnbokma.com/websitedesign/
Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
Tevreden opdrachtgevers: http://castleamber.com/testimonials.html
Re: [PHP] mail functie veilig?
John Bokma <postmaster@castleamber.com>:
> ahaayman@hotmail.com (Arjen Haayman) wrote in
> news:d260151f.0410052238.382c1ca0@posting.google.c om:
>
>> Ik lees her en der dat m.n. het email-adres moeilijk te valideren is,
>> of is daar ook een PHP-module voor?
>
> Er is ergens een Perl expressie die erg omvangrijk is, en in de buurt
> schijnt te komen :-D
Zie bijvoorbeeld halverwege
http://search.cpan.org/src/MAURICE/E...-0.15/Valid.pm
Ik vind
http://search.cpan.org/src/ABIGAIL/R...1.5/Address.pm ook
wel een mooie oplossing :)
--
robert
Re: [PHP] mail functie veilig?
Arjen Haayman:
>Dan nu nogmaals m'n vraag: wat is een veilige set karakters om toe te
>staan in de variabelen $naam en $email?
Dat staat in RFC 822.
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Re: [PHP] mail functie veilig?
robert wrote:
> Zie bijvoorbeeld halverwege
> http://search.cpan.org/src/MAURICE/E...-0.15/Valid.pm
>
> Ik vind
> http://search.cpan.org/src/ABIGAIL/R...1.5/Address.pm ook
> wel een mooie oplossing :)
>
Dus al die PHP-gebruikers hebben nog niets gemaakt? Zijn alle
php-mail-formulieren of is moet iedereen het wiel opnieuw uitvinden?
Ik verwacht dus eigenlijk dat de algemeen gebruikte mail() functie (of
een andere module) alle ervaringen van iedereen bundelt. Of is dat
teveel gevraagd?
--
Arjen Haayman
-- cogito ergo bicyclo --
Re: [PHP] mail functie veilig?
robert wrote:
>
> Zie bijvoorbeeld halverwege
> http://search.cpan.org/src/MAURICE/E...-0.15/Valid.pm
>
> Ik vind
> http://search.cpan.org/src/ABIGAIL/R...1.5/Address.pm ook
> wel een mooie oplossing :)
>
Willen jullie zeggen dat er voor PHP niets is om veilig mail te
gebruiken? Moet iedereen zelf het wiel uitvinden of gigantische
reguliere expressies uit perl vertalen naar PHP???
--
Arjen Haayman
-- cogito ergo bicyclo --
Re: [PHP] mail functie veilig?
Arjen Haayman <ahaayman@deadspam.com>:
> robert wrote:
>
>> Zie bijvoorbeeld halverwege
>> http://search.cpan.org/src/MAURICE/E...-0.15/Valid.pm
>>
>> Ik vind
>> http://search.cpan.org/src/ABIGAIL/R...1.5/Address.pm
>> ook wel een mooie oplossing :)
>
> Willen jullie zeggen dat er voor PHP niets is om veilig mail te
> gebruiken?
In PEAR zit een Mail_RFC822::Mail_RFC822() waarvan geclaimd wordt dat het
e-mail adressen kan checken op geldigheid.
De meeste PHP-voorbeeldcode voor geldige e-mail adressen die je met Google
vindt is erg brak.
--
robert
Re: [PHP] mail functie veilig?
nmp wrote:
> Een formuliertje waarmee men zomaar onder elke willekeurige naam naar elke
> willekeurige ontvanger kan sturen lijkt me echt niet meer van deze tijd,
> zeg maar.
Nee, dat is gewoon een open proxy, buitengewoon overstandig.