xxdrago
3.01.2013, 01:13:26
Witam, w planach mam zrobić upload plików (zdjęć + plików). Problem polega na tym, że nie wiem jak najlepiej zabezpieczyć skrypt, myślałem nad sprawdzaniem mime type, ale wydaje mi się , że da się to ominąć.
<?php
$uploaded = 0;
foreach ($_FILES['userfile']['name'] as $i => $name) {
if ($_FILES['userfile']['error'][$i] == 4) {
continue;
}
if ($_FILES['userfile']['error'][$i] == 0) {
if ($_FILES['userfile']['size'][$i] > 99439443) {
$message[] = "$name exceeded file limit.";
continue;
}
echo $_FILES['userfile']['type'][$i];
$uploaded++;
}
}
foreach ($message as $error) {
}
?>
mokry
3.01.2013, 14:20:53
Zamiast odkrywać koło na nowo skorzystaj z czegoś sprawdzonego, gotowego i łatwego.
Np.:
http://www.verot.net/php_class_upload.htm
wNogachSpisz
3.01.2013, 14:46:56
A kto tą biblitekę pisał? Jakiś garażowy chłoptaś? Upload plików przemieszany z manipulacją obrazkami? Nie dziękuję. W sieci jest dużo dobrego softu do obsługi uploadu plików, ale ww. bbiliteka nie zalicza się do tego grona.
mokry
3.01.2013, 14:58:13
Owszem, w sieci jest bardzo dużo dobrych bibliotek/klas, które pomagają podczas uploadu plików i zdjęć na serwer.
Czy przedstawiony przeze mnie przykład klasy jest dobry czy też nie jest tak na prawdę kwestią gustu i tego, co faktycznie jest akurat potrzebne danemu programiście. Nie zamierzam się tutaj wdawać w dyskusję, czy jest to dobry/lepszy/najlepszy kod, jednak na pewno jest sprawdzony, działa stabilnie i posiada sporo możlwiości, w szczególności jeśli chodzi o możliwość manipulacji na obrazach.
wNogachSpisz
3.01.2013, 15:15:04
To może zrób forka w którym dopiszesz do niej funkcje wynoszenia śmieci.
W twoim guście jest upychanie do jednej bibliteki zadań ze sobą niezwiązanych?
Dla nooba może i takie rozwiąznie jest wystarczające, ale gdy aplikacja zacyzna się powiększać i następuje chwila w której musisz przeprowadzić jakieś operacje na obrazku dawno po uploadzie, to co? kopiujesz ten sam kod do innej bibliteki? Gratulacje, jestes zwolniony.
mokry
3.01.2013, 15:37:34
Przede wszystkim proponuję nie zbaczać z tematu i nie robić off-topa.
tak, dla noob'a takie rozwiązanie jest w zupełności wystarczające. I jeżeli ktoś nim jest zadaje właśnie takie pytania o upload jakie tutaj padło. I takim osobom daje się łatwe rozwiązania, które mogą szybko zastosować w praktyce. Ot tyle. A jeżeli chesz zacząć jakąkolwiek dyskusje na temat dobrych praktyk i zasad w programowaniu oraz odpowiednim podejściu do modelowania i projektowania aplikacji to zapraszam do oddzielnego tematu.
xxdrago
3.01.2013, 16:22:00
Panowie, bez obrazy ale siedzę już w php pare lat. Podglądnę rozwiązanie z tamtej klasy, ale raczej wolałbym coś pod siebie napisać

więc jak najlepiej zabezpieczyć ten formularz?
Cytat(xxdrago @ 3.01.2013, 01:13:26 )

Witam, w planach mam zrobić upload plików (zdjęć + plików). Problem polega na tym, że nie wiem jak najlepiej zabezpieczyć skrypt, myślałem nad sprawdzaniem mime type, ale wydaje mi się , że da się to ominąć.
Cytat
Panowie, bez obrazy ale siedzę już w php pare lat.
No to chyba przez te wszystkie lata jedyne co robiłeś, to pisałeś proste kalkulatory w PHP.
Co do tematu - sprawdzanie rozszerzenia + rozmiarów obrazka to podstawa + is_uploaded_file(). W takim wypadku już nic się nie stanie, chyba, że nieumiejętnie nadasz możliwość wykonywania skryptów PHP np. w plikach graficznych w Apache / .htaccess.
xxdrago
3.01.2013, 17:16:59
pyro, wiesz co wole się zapytać, niż potem płakać nad rozlanym mlekiem. I raczej pisało się różne rzeczy ale cały czas unikałem tego uploadu.
A da się jakość sprawdzić czy w obrazku jest zawarty kod php?
Cytat(xxdrago @ 3.01.2013, 17:16:59 )

pyro, wiesz co wole się zapytać, niż potem płakać nad rozlanym mlekiem. I raczej pisało się różne rzeczy ale cały czas unikałem tego uploadu.
A da się jakość sprawdzić czy w obrazku jest zawarty kod php?
Zapytać jak najbardziej, wręcz wskazane, ale z tym "siedzeniem przez kilka lat w PHP" to zwykła ściema, co potwierdziłeś swoim następnym pytaniem czysto początkującego.
A odpowiadając na to pytanie:
fread(),
fgets(),
file_get_contents(),
stripos(),
stristr(),
preg_match(), ...
xxdrago
3.01.2013, 20:41:53
W php siedzę od daty rejestracji: 27.07.2010, to co ty dałeś to sprawdziłbym czy w pliku np. *txt jest kod, a mi chodzi o taki kod typu komentarz. Każdy program dodaje komentarz do pliku np. gif. Ten komentarz można podrobić i plik gif będzie działał podobnie na zasadzie pliku php. Tak gdzieś przynajmniej wyczytałem.
Oczywiście tego, że w/w funkcjami da się otwierać inne pliki niż .txt też nie słyszałeś? Wszystkie pliki, które masz na swoim komputerze da się otworzyć notatnikiem, że tak to ujmę.
// EDIT
Zrób sobie plik .gif o rozmiarach np. 5x5 px, dodaj w komentarzu jakikolwiek kod PHP (np. za pomocą GIMP) i zobacz gdzie on wyląduje.
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.