---
title: "Skydda kataloger"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/16165-skydda-kataloger"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "cmk"
published: "2001-10-06T16:39:00.000Z"
updated: "2001-10-09T06:27:00.000Z"
replies: 13
views: 238
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/16165-skydda-kataloger"
---

# Skydda kataloger

## #1 — cmk, 2001-10-06T16:39Z

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

Permalänk: https://www.webforum.nu/p/16165

## #2 — SuPeR_ToBBe, 2001-10-06T17:05Z

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\]

Permalänk: https://www.webforum.nu/p/324212

## #3 — cmk, 2001-10-06T19:20Z

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

Permalänk: https://www.webforum.nu/p/324213

## #4 — Batboy, 2001-10-06T19:50Z

Har du tillgång till php.ini kan du använda [open_basedir](http://www.php.net/manual/en/configuration.php#ini.open-basedir).

/j

Permalänk: https://www.webforum.nu/p/324214

## #5 — cmk, 2001-10-07T12:29Z

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

Inga andra bra ideér?

/ Martin

Permalänk: https://www.webforum.nu/p/324215

## #6 — spango, 2001-10-07T12:49Z

```
if(strstr($mapp, '..'))
echo "skit ner dig";
else
do_it($mapp);
```

Permalänk: https://www.webforum.nu/p/324216

## #7 — cmk, 2001-10-07T12:54Z

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

/M

Permalänk: https://www.webforum.nu/p/324217

## #8 — spango, 2001-10-07T12:56Z

Inte vad jag vet, i alla fall.

Permalänk: https://www.webforum.nu/p/324218

## #9 — nicclas, 2001-10-07T13:30Z

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/%2E%2E/> 

som båda leder till samma webbsida.

/nicclas - [www.nyhetsrubriker.com](http://www.nyhetsrubriker.com) 

/nicclas

Permalänk: https://www.webforum.nu/p/324219

## #10 — cmk, 2001-10-07T19:49Z

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

/ Martin

Permalänk: https://www.webforum.nu/p/324220

## #11 — nicclas, 2001-10-07T20:07Z

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\]

Permalänk: https://www.webforum.nu/p/324221

## #12 — spango, 2001-10-07T21:02Z

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](http://www.dsv.su.se/~gustaf-c/allehanda/dubbelpunkt.php?foo=%2E%2E), [icke url-kodat exempel](http://www.dsv.su.se/~gustaf-c/allehanda/dubbelpunkt.php?foo=..), [källa](http://www.dsv.su.se/~gustaf-c/allehanda/dubbelpunkt.phps).

Permalänk: https://www.webforum.nu/p/324222

## #13 — nicclas, 2001-10-07T21:31Z

OK

Permalänk: https://www.webforum.nu/p/324223

## #14 — loriel, 2001-10-09T06:27Z

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\]

Permalänk: https://www.webforum.nu/p/324224

---

Tråden på webben: https://www.webforum.nu/amne/php/16165-skydda-kataloger
