Det eneste rigtige er at udnytte den sikkerhed som ligger i operativsystemet, og som har lagt der siden midten af halvfjerdserne. Nemlig at hvert webhotel skal køre med sin egen unikke UNIX Brugere, filer og mapper ejes af denne bruger og scripts eksekveres som denne bruger ... for at beskytte mod klaphatte der sætter for åbne rettigheder på egne filer kan man så passende implementere basedir, og kun åbne for systemkalds funktioner for de kunder der kan finde ud af at styre det. |
Mikkel Mikjær Christensen:Frands:Hvis samtlige systemkaldsfunktioner er slået fra og der er open_basedir() så bevæger man sig i den rigtige retning.Det eneste rigtige er at udnytte den sikkerhed som ligger i operativsystemet, og som har lagt der siden midten af halvfjerdserne. Nemlig at hvert webhotel skal køre med sin egen unikke UNIX Brugere, filer og mapper ejes af denne bruger og scripts eksekveres som denne bruger ... for at beskytte mod klaphatte der sætter for åbne rettigheder på egne filer kan man så passende implementere basedir, og kun åbne for systemkalds funktioner for de kunder der kan finde ud af at styre det.
Jeg er kun delvist enig.
Man introducerer en anden problemstilling når man bruger suphp, fcgi el.lign. hvor scripts eksekveres som ejeren - nemlig at webserveren derved får skriverettigheder til alle filer. Man kan godt administrativt fratage denne bruger sine skriverettigheder, men på *NIX vil ejeren af en fil altid kunne give sig selv skriverettigheder igen ved brug af chmod.*
Der er ikke en hel gylden løsning som tager højde for det hele, men at lade filer være ejet af brugeren selv og i gruppe med webserveren som kun har skriverettigheder i de biblioteker hvor det er påkrævet giver rigtig god mening, hvis man vil (så godt som muligt) afværge både angreb igennem webserveren men også angreb (bevidste eller ubevidste) mod andre kunder forsøgt af føromtalte klaphatte.
* Eksempel:
fbh@testbox $ echo "heste" > testfilefbh@testbox $ cat testfile
heste
fbh@testbox $ sudo chmod 000 testfile
fbh@testbox $ cat testfile
cat: testfile: Permission denied
fbh@testbox $ chmod 700 testfile
fbh@testbox $ cat testfile
heste