Slider – Blog van Cedric Dubois

Cedric Dubois

PHP mail() en header-injecties

De laatste weken zien we enorm veel misbruik van mail-scripts. Spammers zoeken steeds nieuwe manieren om hun mail in onze mailboxen te krijgen, behalve het ontwijken van spamfilters, moeten ze ook op zoek naar transportmiddelen voor hun vuiligheid.

Een van die manieren is dus de header-injectie in de mail-functie van php. Vaak worden gePOSTe variabelen klakkeloos in de mailfunctie gegooid zonder enige controle. De spammer voegt een linebreak toe (in de hoop dat die variabele in de headers terechtkomt) en kan zo extra headers toevoegen, zoals to, cc of bcc. De mail wordt vervolgens netjes afgeleverd in de mailboxen die de spammer meegeeft.

De boodschap is dus, controleer userinput!

U controleert userinput? Via JavaScript? Nutteloos! JavaScript moet door de browser uitgevoerd worden, en die kan ervoor kiezen om JavaScript te negeren en de gegevens toch door te sturen naar uw script. De enige degelijke controle ligt server-side, welke niet simpelweg te omzeilen is door een feature in de browser uit te schakelen.

Sommigen hebben niet altijd de volledige controle over welke scripts er gerund worden op hun webservers (bv. bij shared hosting). Die kunnen ook gebruik maken van mod_security voor apache. Mod_security is een web application firewall die elke request gaat analyseren en matchen tegen configureerbare regels. Bepaalde acties kunnen ondernomen worden als aan zo’n regel gematcht wordt, bv. de request loggen, weigeren, een bepaalde statuscode toewijzen, …

Een voorbeeld van zo’n regel, om mail-injecties tegen te gaan, is:
SecFilterSelective ARGS_VALUES "\n[[:space:]]*(to|bcc|cc)[[:space:]]*:.*@" "deny,log,status:403"

Deze regel zal, bij een match, de request weigeren, loggen en een status 403 (permission denied) terugsturen.

Zie ook: http://securephp.damonkohler.com/index.php/Email_Injection




1 comment

1 Comment so far

  1. Jimmy Cappaert February 21st, 2006 11:08

    Ongelooflijk hoe gebruikers er zo van overtuigd kunnen zijn dat hun formulier veilig is. Ik schrijf deze week nog een nieuw artikel voor op onze supportportaal met wat meer uitleg hierover.

Leave a reply