2011-02-09 15 views
8

Zadałem to pytanie dwa razy myślę, ale po raz pierwszy zbliżyłem się do tego. Planuję, aby użytkownicy mogli przesyłać i pobierać swoje pliki (.pdf, .doc, .exl, .ppt, .png, .jpg, .gif).Bezpieczny skrypt do przesyłania plików PHP

Czy te wskazówki są wystarczyć:

http://blogs.sans.org/appsecstreetfighter/2009/12/28/8-basic-rules-to-implement-secure-file-uploads/

Ponadto, jest tam skrypt mogę wykorzystać, jestem nowy w php.

+1

Jaki skrypt? Widzę tylko kilka zasad prawidłowej obsługi. –

+0

Przepraszamy, oznaczono jako samouczek. – AAA

+1

wskazówki wyglądają dobrze dla mnie, niektóre są zależne od Twoich szczególnych wymagań \ setup –

Odpowiedz

3

Istnieje milion skryptów do przesyłania plików. This one nie jest gorszy od pozostałych.

Chociaż "ochrona" przed ładowaniem plików innych niż pngs nie będzie działać (sprawdza tylko nazwę pliku).

Przesyłanie plików jest dość bezpieczne - daje innym możliwość ich pobrania, co powoduje otwarcie serwera na określone typy ataków. W artykule Państwo odwoływać nie wspomnieć o dwóch ważnych punktów:

  • nigdy służyć każdemu użytkownikowi dostarczone pliki z tej samej domeny jako swojej strony internetowej. Miej oddzielną domenę do pobrania. W ten sposób nawet jeśli komuś uda się załadować animację flash lub kawałek HTML, twoja domena nie ucierpi z powodu ataku cross-domain (np. Jeśli twoja aplikacja ma domenę example.org, powinieneś obsługiwać zawartość użytkownika, powiedzmy, pliki do pobrania. example.com);
  • Zawsze wyświetlaj przesłane pliki z dobrze kontrolowanymi nagłówkami.
+0

Niebezpieczeństwo podczas przesyłania jest wtedy, gdy programista przechowuje załadowany plik w drzewie dokumentu i nie sprawdza ani przyrostka (* .php) ani zawartości. Po wykonaniu daje szkodliwym użytkownikom możliwość uruchomienia niekontrolowanego skryptu na serwerze. Yikes. Przesyłający pliki powinni zawsze sprawdzać nazwy plików i zawartość, aby upewnić się, że plik jest dokładnie taki, jak oczekiwał programista. – JBH

+0

@JBH A jak ten komentarz jest związany z moją odpowiedzią? ... – fdreger

+0

Twoja odpowiedź nie wyjaśnia stwierdzenia: "Przesyłanie plików jest dość bezpieczne - daje innym możliwość pobrania ich, co powoduje otwarcie serwera na określone typy ataków . " Podałem przykład. – JBH

8

dla przyszłych czytelników, którzy są także nowe do PHP:

Przed przeczytaniem instrukcji mowa w odpowiedzi Ricki pod adresem https://stackoverflow.com/a/7065880/1815624, w którym mowa dobrego przewodnika i jest zdecydowanie zalecana odczytu radzę najpierw przeczytać tę odpowiedź:

https://security.stackexchange.com/a/32853/31943

następnie przeczytać podręcznik wspomniany przez Ricki w:

http://blog.insicdesigns.com/2009/01/secure-file-upload-in-php-web-applications/

Po tym wszystkim, jeśli potrzebujesz dodatkowego zabezpieczenia, powinieneś rozważyć odłączenie od Internetu. : P

Powiązane problemy