webForumDet fria alternativet

Skydda kataloger

13 svar · 232 visningar · startad av cmk

cmkMedlem sedan mars 2001325 inlägg
#1

Håller på med ett bildscript som listar alla bilder i en mapp. Mappen anger man via querystring. Hur kan jag fixxa så att man inte kan gå för högt upp i katalogstrukturen?

Mvh Martin

SuPeR_ToBBeMedlem sedan mars 2001185 inlägg
#2

använd den *lägsta* mappen som grund för de andra:

$mapp = opendir("/bla.../bilder$mapp");

där url till sidan blir: bilder.php?mapp=/porr (exempel :e)

[Redigerat av SuPeR_ToBBe den 06 okt 2001]

cmkMedlem sedan mars 2001325 inlägg
#3

SuPeR_ToBBe: Men vad händer om man skickar tex. "../../../mega-super-hemlig-mapp/" i variabeln $mapp? Då går väl funktionen upp ändå i katalogträdet eller?

RED: Stavfel :(
/Martin

------------------
[silver]Keep on rocking 24-7[/silver]

[Redigerat av cmk den 06 okt 2001]

BatboyMedlem sedan jan. 20001 006 inlägg
#4

Har du tillgång till php.ini kan du använda open_basedir.

/j

cmkMedlem sedan mars 2001325 inlägg
#5

Batboy: Jo, här hemma har jag ju det men förmodligen inte senare. :(

Inga andra bra ideér?

/ Martin

------------------
[silver]Keep on rocking 24-7[/silver]

spangoMedlem sedan juni 20008 205 inlägg
#6
if(strstr($mapp, '..'))
echo "skit ner dig";
else
do_it($mapp);

------------------
And remember, when you look into the pit, the pit looks back into you. /Anonymous INTERCAL hacker

cmkMedlem sedan mars 2001325 inlägg
#7

spango: Hur säkert blir det då? Det finns inga andra sätt att komma upp i katalogstrukturen än att skriva "../" eller?
Tack.

/M

spangoMedlem sedan juni 20008 205 inlägg
#8

Inte vad jag vet, i alla fall.

------------------
And remember, when you look into the pit, the pit looks back into you. /Anonymous INTERCAL hacker

nicclasMedlem sedan feb. 20001 050 inlägg
#9

Jo, spangos kod "suger" (ledsen, spango :) ). Spangos kod går att komma runt genom att skriva . och / med dess "unicode" (eller extended unicode?) motsvarighet. Prova tex:
http://cgi.webforum.nu/wfcgi/../
http://cgi.webforum.nu/wfcgi/../

som båda leder till samma webbsida.

/nicclas - www.nyhetsrubriker.com

/nicclas

cmkMedlem sedan mars 2001325 inlägg
#10

nicclas: Har du möjligtvis några andra förslag? :)

/ Martin

------------------
Keep on rocking 24-7

nicclasMedlem sedan feb. 20001 050 inlägg
#11

Kanske det...
Under förutsättning att du vet vilka kataloger som finns så kan du kolla att "sökvägarna" som anges endast är till dessa kataloger, och inga andra. Dvs finns under-katalogen "mappen/" och "guld/" så får du helt enkelt prova om den angivna query-strängen endast innehåller orden "mappen/" eller "guld/".

[Redigerat av nicclas den 07 okt 2001]

spangoMedlem sedan juni 20008 205 inlägg
#12

Hallå där! %2E är inte unicode för punkt, det är url-koden. Url-koden avkodas av servern, som sedan skickar den till php. Url-kodat exempel, icke url-kodat exempel, källa.

------------------
You can't be young forever, but you can be immature indefinitely.

nicclasMedlem sedan feb. 20001 050 inlägg
#13

OK

lorielMedlem sedan juli 200038 inlägg
#14

På valfritt sätt skapar du en lista (eller ett helt filträd) över mappar som är tillåtna att öppna. Innan du sedan öppnar vald mapp kontrollerar du mot denna lista. Väldigt enkelt och inte alls så vackert som det skulle kunna vara:

$allowed[] = "mapp1";
$allowed[] = "mapp2";
$allowed[] = "mapp3";
$allowed[] = "mapp4";
if(isset($dir))
 {
  for($i=0; $i<sizeof($allowed);$i++)
   {
    if($allowed[$i] == $dir)
     {
      $access = "granted";
     }
   }
  if(empty($access))
   {
    unset($dir);
    header("location: index.phtml");
   }
  fortsätt sedan att öppna mappen, lista innehåll, sortera innehåll eller vad som nu önskas...

I annat fall är det väl att rekomendera att använda databas. Det är enligt mig betydligt säkrare än ett filhanteringsscipt som kan "sättas ur spel" på mer sätt än vad man orkar räkna till.

[Redigerat av loriel den 11 okt 2001]

136 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)