Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Upload plików
djpiatek
post 27.09.2010, 00:05:55
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 24.04.2009

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


Witam smile.gif

Piszę stronę uploadu plików i oczywiście pobierania z niej plików i myślę aktualnie nad zabezpieczeniami. Na tą chwilę mam stworzony plik .htaccess:
  1. Options -Indexes
  2. Options -ExecCGI
  3. AddHandler cgi-script .php .php3 .php4 .phtml .pl .py .jsp .asp .htm .shtml .sh .cgi


uploadować można wszystkie rozszerzenia - co proponujecie użyć aby było bezpiecznie ?smile.gif

Ten post edytował djpiatek 27.09.2010, 00:06:29
Go to the top of the page
+Quote Post
kiler129
post 27.09.2010, 01:41:28
Post #2





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Najbezpieczniejszą opcją jest aby katalog z plikami leżał w drzewie o jeden stopień płycej niż htdocs. Wtedy nie dając userom bezpośredniego URL do plików mało, że możesz kontrolować 100% ich pobieranie to na dokładkę masz z głowy wszystkie skrypty.
Nie ma róży bez kolców - musisz napisać odpowiednio skrypt do downloadu.

p.s. Jeśli już zabezpieczasz htaccesem to nie rób dziwnych kombinacji jak wyłączanie cgi a następnie aktywowanie handlera cgi dla odpowiednich plików.
Może to spowodować w najlepszym wypadku HTTP/500 a w najgorszym aktywowanie cgi-exec (bo opcja addhandler może nadpisac -Exec* w niektórych konfiguracjach) co spowoduje wykonanie kodu.
Bezpieczniej jest dać je w odwrotnej kolejności chociaż to też nie daje 100% pewności.
Najlepsze byłoby serwowanie plików z osobnej subdomeny będącej vhostem nie posiadającym żadnego interpretera (czy to php czy cgi).
Możesz też użyć tricku służącego mi zanim nauczyłem się sposobu z drzewem lub z vhostem:
Kod
AddType text/html .php


Ten post edytował kiler129 27.09.2010, 01:49:02


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
piotr94
post 27.09.2010, 08:36:38
Post #3





Grupa: Zarejestrowani
Postów: 331
Pomógł: 30
Dołączył: 11.11.2008
Skąd: Kraków

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


ja polecam ten katalog o poziom wyżej niż htdocs, u mnie się sprawdza takie rozwiązanie.
przeczytaj też:
http://forum.php.pl/index.php?showtopic=135788&hl=


--------------------
http://www.piotr94.net21.pl/ - wykonanie stron i serwisów internetowych
Jeśli moje wypowiedzi były dla Ciebie pomocne, kliknij "Pomógł" i odwdzięcz się ;)
Go to the top of the page
+Quote Post
djpiatek
post 27.09.2010, 11:32:32
Post #4





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 24.04.2009

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


Odpowiedni skrypt do downloadu co powinien zawierać ? myślałem nad
  1. header('Content-Disposition: attachment; filename=' . $nazwa);

Go to the top of the page
+Quote Post
piotr94
post 27.09.2010, 13:41:07
Post #5





Grupa: Zarejestrowani
Postów: 331
Pomógł: 30
Dołączył: 11.11.2008
Skąd: Kraków

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


powinien zawierać cały szereg różnych funkcji, to co pokazałeś jak najbardziej tak,
przeczytaj dokładnie wszystko z linka, który CI podałem:
http://us2.php.net/manual/en/function.readfile.php
  1. <?php
  2. $file = 'monkey.gif';
  3.  
  4. if (file_exists($file)) {
  5. header('Content-Description: File Transfer');
  6. header('Content-Type: application/octet-stream');
  7. header('Content-Disposition: attachment; filename='.basename($file));
  8. header('Content-Transfer-Encoding: binary');
  9. header('Expires: 0');
  10. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  11. header('Pragma: public');
  12. header('Content-Length: ' . filesize($file));
  13. flush();
  14. readfile($file);
  15. }
  16. ?>
  17.  

uwżaj tylko na zapytania z ../ i innymi tego typu rzeczami. Najlepiej pliki indeksuj w db, do skryptu przekazuj tylko ID i potem cała reszta.


--------------------
http://www.piotr94.net21.pl/ - wykonanie stron i serwisów internetowych
Jeśli moje wypowiedzi były dla Ciebie pomocne, kliknij "Pomógł" i odwdzięcz się ;)
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: 13.06.2025 - 07:39