Avatar billede webcreator Nybegynder
13. november 2005 - 22:26 Der er 9 kommentarer og
1 løsning

Sikkerhed ved brug af fopen()

Hej Eksperter.

Er der nogen sikkerhedsproblemer i, at bruge fopen() til at åbne nogle filer på serveren, hvor jeg henter mappe-strukturen vha. $_POST[] ? Jeg er nervøs for om man evt. kan inkludere kode fra andre filer end dem der ligger på mit eget hotel. Stien til filen bliver lavet sådan her :

$path1 = $_POST["path1"];
$path2 = $_POST["path2"];

Reelt kan en bruger jo gå op i linket og pille i mappe-strukturen. Jeg har tænkt mig at tjekke med file_exists() før jeg åbner noget, men jeg ved ikke om det er tilstrækkeligt.

$file = "images/graph/$path1/$path2/data.php";
Avatar billede erikjacobsen Ekspert
13. november 2005 - 22:32 #1
Det er ikke godt, det du gør der. Du bør finde en anden metode. Et par forslag
1) Gem et tal sammen med stien i en database, og brug tallet i url-en
2) (nøøødløsning): check, der ikke står ".." noget sted i filnavnet.
Avatar billede webcreator Nybegynder
13. november 2005 - 22:36 #2
Well, ville jo netop gerne undgå databasen. Det skal være simpelt at styre billeder - bare op med FTP, og så kører det.
Avatar billede webcreator Nybegynder
13. november 2005 - 22:39 #3
Er det et problem hvis jeg tjekker om filen eksisterer ?

$file = "images/graph/$path1/$path2/data.php";

if (file_exists($file))
{
    // mere kode..
}

Så vidt jeg kan se kan '..' kun bruges til at hoppe tilbage i mappe-strukturen. Og det vil ikke lykkes da ingen af mapperne indeholder en fil med navnet 'data.php'.
Avatar billede erikjacobsen Ekspert
13. november 2005 - 22:40 #4
Hvis du ved at der kun ligger ting i images/graph, der må ses af "fremmede", så bør du kunne sove roligt om natten (af den grund i hvert fald), hvis du tjekker $path1 og $path2 grundigt. Hvis du sørger for at de aktuelle mapper kun indeholder tegn a-z0-9, og du i dit script også checker det, så kan man vel ikke få fat i noget forkert.
Avatar billede webcreator Nybegynder
13. november 2005 - 22:45 #5
Det der ligger i "images/graph/$path1/$path2/" er fuldstændig u-hemmeligt. Alle må se det. Men jeg vil helst ikke have at folk kan tilgå data "bagud" - altså længere oppe i billed-strukturen.
Avatar billede webcreator Nybegynder
13. november 2005 - 22:45 #6
billed-strukturen = mappe-strukturen
Avatar billede erikjacobsen Ekspert
13. november 2005 - 22:49 #7
Fint nok. Så har du fået løsningen.
Avatar billede webcreator Nybegynder
13. november 2005 - 22:59 #8
Jeg siger tak så. Smid et svar - jeg accepterer når jeg kommer online igen.
Avatar billede erikjacobsen Ekspert
13. november 2005 - 23:14 #9
Jeg samler slet ikke på point, tak.
Avatar billede webcreator Nybegynder
05. marts 2006 - 13:37 #10
.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester