Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Katalogi
Forum PHP.pl > Forum > PHP
MILICJA
Mam zamiar napisac sobie prosta przegladarke katalogow. Nie chce wypisywac wszystkich jako drzewa. ma to wygladac tak ze wyswietla sie katalog glowny (root) i w nim znajduja sie inne podkatalogi. Przejscie do podkatalogow nastepuje przez przekazanie GET np. ?katalog=root/podkatalog

Pytanie 1. Jak zabezpieczyc skrypt, aby uzytkownik ktory wpisze sobie w adresie ?katalog=../innykatalog
Chce, aby nie dalo sie przegladac katalogu polozonego nizej niz root.

Pytanie 2. Jak bezpiecznie przekazac sciezki do skryptu. Czy rozwiazanie ?katalog=... jest dobre ? czy istnieja jakies inne lepsze sposoby, rozwiazania.

Pozdrawiam
phpion
Linki przekazuj jako podkatalog, podkatalog/sraka i dopiero w skrypcie doklejaj początek ścieżki (czyli root). A przed wyjściem katalog wyżej zabezpieczysz się zwykłym str_replace ../ na cokolwiek (np. nic tongue.gif).
zimi
ja bym skorzystał z funkcji realpath i jej rezultatowi kazałbym się zaczynać od jakiejś ścieżki którą bym wyznaczył jako katalog główny do "zabaw" dla tego skryptu

wydaje mi się że to pozwala na większą swobodę no i de facto zrzuca odpowiedzialność za nadzorowanie ścieżki na kogoś innego...

generalnie sama idea osobiście mi się nie podoba, tak samo jak nie podobało by mi się generowania kodu zapytań SQL, PHP, shell'a, przy czym chodzi mi o $_GET w charakterze kodu właściwego a nie argumentów

no ale każdy skrypt ma jakieś swoje potrzeby

ten da sie zrobić bezpiecznie i zrobiłbym to z realpath...
dadexix
Cytat(phpion @ 7.07.2008, 20:02:40 ) *
A przed wyjściem katalog wyżej zabezpieczysz się zwykłym str_replace ../ na cokolwiek (np. nic tongue.gif).

No a jeśli chce zrobic przycisk "do góry"? najlepiej tak jak to działa w wielu klientach ftp(np. filezilla) łatwiej mu będzie dać katalog/sub/sub/../ niż odejmować ostatni sub za pomocą str reklace:)
Cytat
ten da sie zrobić bezpiecznie i zrobiłbym to z realpath...

zgadzam się:)
  1. <?php
  2. if(strpos(realpath($_GET['path']), realpath($dir)) === false){
  3. echo "błąd";
  4. }
  5. ?>

Taki przykład użycia, jak dobrze myśle(godzina 3:30), w przypadku tego każde wyjście poza $dir sprawi że ukaże się "błąd":)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.