@jaskowice1: pomijajac pytanie to Twoj kod bledny jest. Prosisz sie o hack przez directory traversal jak rowniez o kolizje nazw plikow uzywajac oryginalnej nazwy pliku danej przy uploadzie. A do sprawdzania nazwy uzyj sobie
if(strtolower(substr($_FILES['plik']['name'], -4)) == '.pdf')... . Ale to tez z slabe jest bo powinienes sprawdzic faktyczna zawartosc pliku zeby to sens mialo.
@jaskowice1: sprawdzaj typ mime $FILES["plik"]['type']. Zwróci to typ mime, Dodaj sobie tablicę z dopuszczonymi formatami i sprawdzaj czy zwracany typ sie w niej znajduje
@piokom123: wydaje mi się ,że nie ma innej racjonalnej metody na weryfikację...daje to już można się zabezpieczyć przed uruchomieniem określonego typu plików po stronie serwera.
@fotexxx: jak wiesz to zaznaczaj to od razu, bo ktoś może uznać taką opcję za bezpieczną ;)
Lepsze już jest np. FileInfo http://www.php.net/manual/en/book.fileinfo.php (też nie daje 100% ale jest znacznie bezpieczniejsze). Do tego jak zapisujesz plik na serwerze to w folderze bez dostępu z zewnątrz i bez prawa do wykonywania, kolejne kilka procent do bezpieczeństwa ;)
@piokom123: tak :D w metadanych można zamieścić dowolny kod. W tym kod javascript,php. Poważnym błędem jest wyświetlanie tych danych bez jakiejkolwiek weryfikacji ich zawartości.
Linku niestety nie znajdziesz ,bo sprawa nigdy nie ujrzała światła dziennego. Niebezpiecznik nawet nie chciał o tym pisać ,bo miał obawy o sądzenie się z Agnieszczakiem. Zdarzenie miało miejsce w 2011
Mało tego były wtedy dwa błędy. Jeden z exif i drugi z flashowym uploaderem który pozwalał
@fotexxx: JavaScript może jeszcze ok jeśli bezmyślnie wszystko wyświetlali, ale PHP byłoby zupełnie niegroźne w tym przypadku ;)
Poza tym niezbyt wiarygodnie to wygląda. Jeśli potwierdzone informacje dotarły do Niebezpiecznika to na pewno by o tym napisali, tylko z opóźnieniem, jak już wiele razy robili.
@piokom123: Nigdy o tym nie napisali...skończyło się tylko na tym ,że napisali email ,że skontaktują się z fotka.pl w celu oświadczenia i na tym koniec. Dostali całą dokumentację i nawet dowody namacalne na istnienie tych luk.
No mirki kochane muszę coś wyznać, właśnie się dowiedziałem że moja wybranka serca po 6 latach bycia razem mnie zdradziła. I #!$%@?, kredyt, mieszkanie, 6 lat razem wszytko w #!$%@?. Co robić? Jak żyć?
$tmpname = $FILES["plik"]["tmpname"];
$name = 'pliki/'.$FILES["plik"]["name"];
moveuploadedfile($tmp_name, $name);
$mail->AddAttachment($name);
#webdev #phpmailer #php #backend
http://stackoverflow.com/questions/14789206/php-if-statement-to-filter-file-extensions
http://stackoverflow.com/questions/8773737/php-upload-file-filtering
if(strtolower(substr($_FILES['plik']['name'], -4)) == '.pdf').... Ale to tez z slabe jest bo powinienes sprawdzic faktyczna zawartosc pliku zeby to sens mialo.
Lepsze już jest np. FileInfo http://www.php.net/manual/en/book.fileinfo.php (też nie daje 100% ale jest znacznie bezpieczniejsze). Do tego jak zapisujesz plik na serwerze to w folderze bez dostępu z zewnątrz i bez prawa do wykonywania, kolejne kilka procent do bezpieczeństwa ;)
Linku niestety nie znajdziesz ,bo sprawa nigdy nie ujrzała światła dziennego. Niebezpiecznik nawet nie chciał o tym pisać ,bo miał obawy o sądzenie się z Agnieszczakiem. Zdarzenie miało miejsce w 2011
Mało tego były wtedy dwa błędy. Jeden z exif i drugi z flashowym uploaderem który pozwalał
Poza tym niezbyt wiarygodnie to wygląda. Jeśli potwierdzone informacje dotarły do Niebezpiecznika to na pewno by o tym napisali, tylko z opóźnieniem, jak już wiele razy robili.
$FILES['uploadedfile']=$name;
if ($FILES) {
if ($_FILES["uploadedfile"]["type"] == "image/png") {
$target_path = "uploads/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "The file ". basename( $_FILES['uploadedfile']['name']).
" has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
}
} else { echo "Not A PNG…";
}
}
$mail->AddAttachment($name);
Co tu jest źle ? ( ͡
1. Użycie $_FILES["uploadedfile"]["type"]
2. Użycie nazwy pliku przesłanego przez usera
3. Błąd logiczny w pierwszych dwóch liniach
@jaskowice1: nie wiem co tu robisz, ale chyba powinno być
$name = $FILES['uploadedfile'];
bo w innym wypadku to sobie czyścisz tę zmienną :D