Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]blokowanie dostępu do plików wyżej w hierarchii
Majzel
post 27.11.2008, 20:38:18
Post #1





Grupa: Zarejestrowani
Postów: 110
Pomógł: 0
Dołączył: 3.07.2007

Ostrzeżenie: (0%)
-----


Chciałbym zablokować pliki powyżej folderu załóżmy download, wiem jak by to miało mniej więcej wyglądać ale nie wiem jak to napisać:D brakuje mi z może 1 linijki,
  1. <?php
  2. define('WEBMADE', true);
  3. ?>
  4. <a href="cos.php?file=cos.jpg" />Ściągnij!</a>
  5. <?php
  6.  
  7. if (isset($_GET['file']))
  8. {       if ($_GET['file']== // tutaj coś żeby adres wyglądał tak żeby nic nie można wpisać pomiędzy)
  9.            {
  10.                
  11.            
  12.        header('Cache-control: private');
  13.        header('Content-Length: ' . filesize($_GET['file']));
  14.        header('Content-Type: application/octet-stream');
  15.        header('Content-Disposition: attachment; filename=' . basename($_GET['file'])); // nagłówek ustawiający zawartość jako załącznik
  16.  
  17.        readfile($_GET['file']); // ściągnięcie pliku    
  18.        }
  19. }
  20.  
  21. echo basename($_GET['file']);
  22. ?>


eh, jak to było ? jak to napisać?
bo chodzi mi o to żeby np. z takiego czegoś:
http://localhost/download/wlam.php?file=cos.jpg
nie mogli zrobić:
http://localhost/download/wlam.php?file=../index.php

Ten post edytował Majzel 27.11.2008, 20:40:13
Go to the top of the page
+Quote Post
erix
post 27.11.2008, 21:14:21
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




basename" title="Zobacz w manualu PHP" target="_manual


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Majzel
post 27.11.2008, 21:20:47
Post #3





Grupa: Zarejestrowani
Postów: 110
Pomógł: 0
Dołączył: 3.07.2007

Ostrzeżenie: (0%)
-----


smile.gif
nie jestem jeszcze na tym etapie żeby zrozumieć od zaraz o co chodzi z tą funkcją smile.gif
zrobiłem tak i działa:
  1. <?php
  2. if (preg_match('/^[a-zA-Z.]+$/',$_GET['file']))
  3. ?>

ale o co chodzi z tym basename? przezcież ona tylko zwraca nazwe pliku
Go to the top of the page
+Quote Post
bobo168
post 27.11.2008, 21:22:41
Post #4





Grupa: Zarejestrowani
Postów: 201
Pomógł: 9
Dołączył: 23.08.2006

Ostrzeżenie: (0%)
-----


sprawdzanie czy zmienna file posiada znak '/' jeśli tak do nie dopuszczasz do pobrania.
  1. <?php
  2. if(substr_count($_GET['file'],"../")==0)
  3. {
  4. // wykonuje kod
  5. }
  6. else
  7. {
  8. // nie wykonuje kodu
  9. }
  10. ?>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.06.2025 - 19:36