Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][HTML]Sprawdzenie MimeType w JS
Forum PHP.pl > Forum > Przedszkole
Rid
Czy dobrym pomysłem jest sprawdzenie mime-type pliku po stronie klienta.Czytałem ,że JS ma ograniczony dostęp do systemu plików,katalogów itp.Dlatego,niekiedy może się zdażyć ,że typ mime pliku może zostać nieprawidłowo rozpoznany.
Czy lepiej pominąć sprawdzanie mime pliku po stronie klienta i użyć tego sposobu tylko po stronie serwera??
Ktoś ,próbował użyć weryfikacji mime pliku w JS ,czy to prawidłowo funkcjonuje?
drozdii07
Zrob walidacje po stronie serwera. JS mozna wylaczyc wiec cala walidacja pojdzie na grzyby smile.gif
Rid
Ja się tym nie przejmuje-bo większość strony oparta jest o technologię ajax ,tak więc jak wyłączy JS-to raczej plików nie ściągnie,nie załaduje obrazów itp.

Więc jak,ktoś wie czy weryfikacja mime po stronie js jest skuteczna-to prosiłbym o odpowiedź,bo nie chciałbym ,aby odrzucało co drugiej osobie uploadowane pliki ze względu na źle rozpoznany typ mime .
drozdii07
Ja na twoim miejscu nie ryzykowalbym walidacji tylko JS. To co jest po stronie klienta jest jego, wiec moze robic z tym co chce. Nie jestem pewien ale NoScriptem mozna blokowac wybrane skrypty.
melkorm
Źródło -> wywal kod odpowiedzialny za walidację -> oh gdzie ta piękna walidacja Q_Q
Rid
Cytat
Źródło -> wywal kod odpowiedzialny za walidację -> oh gdzie ta piękna walidacja Q_Q

Tej wypowiedzi to nie rozumie-czyli doradza Pan pominięcie sprawdzania mime w JS?questionmark.gif

Cytat
Ja na twoim miejscu nie ryzykowalbym walidacji tylko JS. To co jest po stronie klienta jest jego, wiec moze robic z tym co chce. Nie jestem pewien ale NoScriptem mozna blokowac wybrane skrypty.
.

A czy ja powiedziałem,że będę używał weryfikacji mime tylko ,po stronie klienta???Otóż nie ,mam zamiar zastosować oba rozwiązania(po stronie klienta i po stronie serwera),tylko muszę się dopytać czy weryfikacja mime w js jest skuteczna ze względu na to że js ma ograniczony dostęp do zasobów i może czasami błędnie rozpoznawać typ mime plików,ale nie jestem tego na 100% pewny,Dlatego pytam czy warto użyć JS do sprawdzania typu mime pliku,czy to pomoże,czy raczej zaszkodzi??
drozdii07
Jesli naprawde potrzebna ci walidacja bez przeladowania to napisz skrypt PHP i komunikuj sie z nim za pomoca AJAX

EDIT: Skoro chcesz robic walidacje po stronie serwera, to po co pchac sie dodatkowo w JS ?
Rid
Dla wygody użytkownika,dodatkowo dla bezpieczeństwa,bo akurat mam zastosowane u siebie takie rozwiązania,że walidacje typu mime pliku mogę po stronie klienta z łatwością wdrożyć bez dodatkowych requestów ajaxowych,tylko czy jest ona skuteczna i nie powoduję błędów i komplikacji?
drozdii07
Jak sie tam upares na to JS to kombinuj cos. Jesli mozesz to podeslesz link gdzie znalazles cos o tego typu walidacji ? Bo mi google nic nie chce powiedziec
Rid
http://help.dottoro.com/ljkfceta.php

Tak poza tym ,z mojego punktu widzenia walidacja js w moim(tym) przypadku, jest bardziej preferowana ,niż po stronie serwera,
dlatego ,że kontrolka u mnie po prostu nie działa bez js ,tak więc plik nie zostaną uploadowany. Toteż forma walidacji po stronie serwera jest u mnie doatkowym zabezpieczeniem.

Wprowadziłem funkcje która,niejako wychwytuje mime pliku-ale ja nie widzę różnicy pomiędzy zwykłej walidacji
za pomocą rozszerzeń.
Zrobiłem mały eksperyment-zapisałem zwykły dokument tekstowy-z niegroźnym skryptem w JS jako jpg.
Uploadowałem plik i wykryło mime image/jpeg ,zapisało go do katalogu-na szczęście kod się nie wykonał-czy to tak ma działaćquestionmark.gif
Na stronie http://jsbin.com/akati3/2 ,jest tester uploadu -sprawdzałem tam i mniej więcej działa tak jak u mnie chociaż ja to inaczej rozwiązałem-wykrywa tam image/jpeg.
Jak przesiać takie pliki,które w rzeczywistości nie są obrazami.
Jak sprawdzić mapę bitową pliku?questionmark.gif?-bo chyba jedynie ,tak można "przesiać" zapobiec uploadowaniu takich plików.
drozdii07
Sam sie przekonales, ze walidacja w JS to zly pomysl smile.gif Uzyj skryptu server-side, oszczedzisz sobie klopotu
Rid
Wątpię ,żeby sprawdzenie mime pliku po stronie serwera coś zmieniło,w przypadku eksperymenciku ,który zrobiłem,ale spróbuję-nic nie zaszkodzi.
Myślę ,że jedynym skutecznym sposobem będzie sprawdzenie bitmapy pliku,ale będzie trudno bo jeszcze tego nie robiłem.

I tak jak podejrzewałem nie sprawdzi się tego prostym sposobem jak(get_Contets) ,metody te nie są skuteczne,ustalanie mime bazuje na rozszerzeniach.Tak więc ,zbędne jest ustalanie MIME w JS!!!!
Trzeba otworzyć plik i odczytać pierwsze 256bitów aby móc potem sprawdzić do jakich wzorców pasują dane binarne i poprzez to określić prawidłowy tym mime pliku-raczej tego w js się nie zrobi.



I powiem Wam Panowie ,że u was też walidacja typu mime leży,bo udało mi się załadować z localhosta zdjęcia,a jedno zamienione jest z txt na jpg.Dziwne.
drozdii07
Sproboj cos zrobic z tablica $_FILES tam jest zapisany typ przesylanego pliku, przy okazji mozesz zrobic sprawdzanie rozszerzen
by_ikar
Możesz wszystkie ładowane obrazki zmieniać na jakiś inny typ, np wszystko przerabiaj na jpg, bez względu czy to będzie jpg, czy png wszystko na jpg. Lub nawet zmień rozdzielczość, wydaje mi się że funkcje które odpowiadają za sprawdzanie rozmiaru, zmianę rozmiaru itp w przypadku pliku innego niż graficzny, wywalą jakiś błąd. Nie mniej, sam tak robię, próbowałem wrzucić na serwer obrazek z zakomentowanym kodem i takie działanie za każdym razem kończyło się niepowodzeniem.

Gdyby sprawdzanie mimetype po stronie serwera było złe, to serwisy tupu facebook, czy nk nie miałby racji bytu. A sposobów na sprawdzanie mime jest sporo i większość z nich jest dobra.
Rid
Nie twierdze, że sprawdzanie po stronie serwera jest,złe-tego nigdy nie powiedziałem.Twierdze jednak że tradycyjne metody sprawdzania typu mime zarówno w PHP jak i w platformie NET są niewystarczające wręcz zbędne gdyż wykrywanie typu mime odbywa się za pomocą rozszerzeń plików.Osoba ,która zrobiła już sprawdzanie plików za pomocą rozszerzeń nie musi już używać sprawdzania typu mime tradycyjnymi metodami ,gdyż jest to równoznaczne z sprawdzeniem rozszerzenia pliku.Jak chce się konkretnie zabezpieczyć trzeba użyć"niestandardowych" skryptów-i tyle z mojej strony.
drozdii07
Ktos kto sprawdza tylko rozszerzenie jest moim zdaniem zbyt pewny siebie, lub mysli, ze nikt nie bedzie probowal tego obejsc..Poczytaj o binderach smile.gif
by_ikar
Cytat(Rid @ 6.07.2011, 12:22:48 ) *
Nie twierdze, że sprawdzanie po stronie serwera jest,złe-tego nigdy nie powiedziałem.Twierdze jednak że tradycyjne metody sprawdzania typu mime zarówno w PHP jak i w platformie NET są niewystarczające wręcz zbędne gdyż wykrywanie typu mime odbywa się za pomocą rozszerzeń plików.Osoba ,która zrobiła już sprawdzanie plików za pomocą rozszerzeń nie musi już używać sprawdzania typu mime tradycyjnymi metodami ,gdyż jest to równoznaczne z sprawdzeniem rozszerzenia pliku.Jak chce się konkretnie zabezpieczyć trzeba użyć"niestandardowych" skryptów-i tyle z mojej strony.


Dlatego nie sprawdza się typu mime w sposób jaki oferują to języki, tylko na około, czyli np sprawdzając rozmiar obrazka, zmieniając jego typ, zmieniając jego rozdzielczość itp. Takie rozwiązania są IMO najlepsze.
Rid
Ok już zrobiłem-i teraz wykrywa mi plik tekstowy,który został zmieniany na jpg jako plain/text a nie jako img/jpeg i plik taki się nie ściągnie yahoo.gif Dałbym rozwiązanie ,ale niestety nie robię w tej technologii,więc się na nic tutaj komu zda:(.
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.