![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 18.04.2015 Ostrzeżenie: (0%) ![]() ![]() |
Można weryfikować rozszerzenia, mime_types, sprawdzić czy plik jest obrazkiem. Wszystko to da się obejść. Czy dodanie tego do .htaccess załatwi sprawe:
Jest jakieś lepsze rozwiązanie? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Jak tylko obrazki to getimagesize.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 18.04.2015 Ostrzeżenie: (0%) ![]() ![]() |
Zastanawia mnie czy archiwa niosą jakies zagrożenia.(.rar,.zip,.7zip)
Dozwolone będą nie tylko pliki graficzne. Trzeba prawdopodobnie pozbawić pliki możliwości wykonywania. Czy zaszyfrowanie pliku podczas uploadu i odszyfrowanie podczas ściągania może być zebezpieczeniem? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Pytanie podstawowe co biędziesz z tymi plikami robił.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 18.04.2015 Ostrzeżenie: (0%) ![]() ![]() |
Pliki będą wrzucone na serwer.(upload dostępny dla każdego) Póżniej ktoś sobie je ściągnie.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 883 Pomógł: 231 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
możesz zapisywać na serwerze pliki bez rozszerzeń, a w bazie zapisujesz informację o prawdziwej nazwie i prawdziwym rozszerzeniu, a potem gdy ma plik zostać pobrany, to pobiera ten plik z oryginalną nazwą i rozszerzeniem.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi się (jeśli tylko się wydaje to mnie poprawcie) ale jak będziesz serwował pliki poprzez skrypt php, to wrzucając nagłówek "application/octet-stream" ktoś sobie to pobierze. Wczytanie pliku przez stream nie powinno wywołać żadnego nieszczęścia.
W skrócie, jeśli zablokujesz dostęp publiczny do plików i będziesz serwował przez skrypt to nie musisz martwić się o zabezpieczenia. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Chyba wszystkie wysłane do przeglądarki pliki jako download będą bezpieczne chociaż nigdy nie można mieć w 100% pewności co tam pomysłowi włamywacze wymyślą.
Lepszą opcją jest moim zdaniem serwowanie plików z domeny statycznej gdzie nie ma żadnego parsera, co za tym idzie możliwości uruchomienia kodu. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Zastanawia mnie czy archiwa niosą jakies zagrożenia.(.rar,.zip,.7zip) W pewnych sytuacjach tak. Na początek warto zapoznać się z tzw. "Zip bomb" i 42.zip czyli zipe, który zajmuje 42 kilobajty, a rozpakowuje się do 4.5 PETAbajtów :-)Dodatkowo do zipa oprócz zwykłych plików i katalogów możesz dodać linki symboliczne, które po rozpakowaniu na serwerze, w pewnych sytuacjach mogą zaburzać logikę aplikacji, albo udostępniać informacje. Przykład: Jest panel, gdzie użytkownik uploaduje zipa, który jest rozpakowany na serwerze za pomocą system("unzip $plik -d $katalog"). Może sobie także na stronie przeglądać spakowane pliki, ale tylko *.jpg. W takich okolicznościach atakujący może wrzucić do zipa link symboliczny z nazwą test.jpg, kierujący do jakiegoś pliku php (albo chociażby /etc/passwd) aby zobaczyć jego zawartość. W przeglądarce będzie to wyglądać jak "zepsuty obrazek" bo obrazkiem oczywiście nie będzie, tylko źródłem pliku do którego linkowaliśmy. Jak zrobić takiego zipa na linuxie: Kod mkdir evilzip cd evilzip/ ln -s /etc/passwd evil.jpg ln -s ../albo/jakis/plik.php evil2.jpg zip --symlinks -r ../evil.zip * Edit: No i polecam też obejrzeć sobie prezentację Gynvaela "Dziesięć tysięcy pułapek: ZIP, RAR, etc." z SEConference 2013 Ten post edytował redeemer 11.11.2015, 10:52:40 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 268 Pomógł: 254 Dołączył: 11.06.2009 Skąd: Świętochłowice Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi się (jeśli tylko się wydaje to mnie poprawcie) ale jak będziesz serwował pliki poprzez skrypt php, to wrzucając nagłówek "application/octet-stream" ktoś sobie to pobierze. Od tego jest nagłówek Content-Disposition. Niemniej ustawienie egzotycznego typu MIME też działa, chociaż w teorii jest niezgodne ze sztuką (IMG:style_emoticons/default/wink.gif) |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 18.04.2015 Ostrzeżenie: (0%) ![]() ![]() |
Według mnie jest jeszcze jeden sposób. Można pobrać plik przez skrypt. Następnie zapakować go do archiwum z losową nazwą i hasłem. Zapisać to w bazie danych. Przed ściągnięciem rozpakować i wysłać.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Zacznijmy od tego że plików graficznych się nie wgrywa, tylko na ich podstawie konwertuje do odpowiedniego formatu. Prócz wspomnianych podstaw mime type, getimagesize jest jeszcze exif_imagetype. Jednak to wszystko można obejść dość prosto zmieniając metatagi danego pliku. Dlatego wrzucasz plik, jakąś biblioteką do obróbki grafiki konwertujesz na odpowiedni format, kasujesz oryginał i dopiero wtedy pokazujesz to światu. Prócz tego w katalogu w którym zapisujesz pliki od użytkowników blokujesz możliwość wykonywania.
Ten post edytował !*! 11.11.2015, 18:45:48 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.09.2025 - 23:21 |