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
5.07.2011, 12:34:10
Zrob walidacje po stronie serwera. JS mozna wylaczyc wiec cala walidacja pojdzie na grzyby
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
5.07.2011, 13:11:26
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
5.07.2011, 13:22:32
Źródło -> wywal kod odpowiedzialny za walidację -> oh gdzie ta piękna walidacja Q_Q
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?
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
5.07.2011, 13:29:02
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 ?
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
5.07.2011, 14:04:27
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
http://help.dottoro.com/ljkfceta.phpTak 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ć

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?

?-bo chyba jedynie ,tak można "przesiać" zapobiec uploadowaniu takich plików.
drozdii07
5.07.2011, 19:21:45
Sam sie przekonales, ze walidacja w JS to zly pomysl

Uzyj skryptu server-side, oszczedzisz sobie klopotu
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
6.07.2011, 08:29:38
Sproboj cos zrobic z tablica $_FILES tam jest zapisany typ przesylanego pliku, przy okazji mozesz zrobic sprawdzanie rozszerzen
by_ikar
6.07.2011, 09:17:44
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.
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
6.07.2011, 11:28:32
Ktos kto sprawdza tylko rozszerzenie jest moim zdaniem zbyt pewny siebie, lub mysli, ze nikt nie bedzie probowal tego obejsc..Poczytaj o binderach
by_ikar
6.07.2011, 12:25:43
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.
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

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.