Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skuteczna ochrona przed LFI
Forum PHP.pl > Forum > PHP
kiler129
Witajcie!
Pisząc CMS zastanowiłem się nad problemem odczytywania nieautoryzowanych plików przez użytkowników. Jedyny skuteczny sposób który nie ograniczy mi nazewnictwa ani funkcjonalności przedstawiłem poniżej:

  1. <?php
  2. define("APATH", "/Users/Grzegorz/Sites/uCMS");
  3.  
  4. $fake_path = APATH."/../../../../var/";
  5. echo "Absolute path: ".APATH."<br />";
  6. echo "Fake path: $fake_path<br />";
  7. echo "Real-fake path: ".realpath($fake_path)."<br /><br />";
  8.  
  9. if(realpath($fake_path) == FALSE || !(substr_count(realpath($fake_path), APATH) >= 1))
  10. {
  11. echo "<font color='red'><b>Path is NOT safe</b></font>";
  12. }
  13. else
  14. {
  15. echo "<font color='green'><b>Path is safe</b></font>";
  16. }
  17.  
  18. ?>


Czy takie rozwiązanie ma jakieś istotne wady? A może któryś z forumowiczów ma lepsze rozwiązanie problemu Local File Include?

Z góry dzięki za pomoc.
Pilsener
Cytat
odczytywania nieautoryzowanych plików przez użytkowników
- to nie jest LFI. Pliki, do których user nie ma praw dostępu (bo nie są np. częścią layoutu) są umieszczone w bezpiecznym folderze, czyli takim, gdzie nie działa php, http ani w ogóle nic, wpisanie ścieżki do tego pliku w przeglądarce spowoduje błąd. O obsłudze plików było wiele tematów i artykułów, wystarczy poczytać.

P.S > To co próbujesz zrobić to nieudolne zamaskowanie ścieżki, takie rzeczy robi się w .htaccess tak, by adres do pliku:
strona.pl/pliki/3456/moj-plik.jpg

Wyglądał faktycznie tak:
strona.pl/index.php?akcja=pliki&id=3456

Pozostaje sprawdzić, czy user ma uprawnienia i jeśli tak, to wysłać mu plik.
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.