Skocz do zawartości

Jak zabezpieczyć uploader.


Marmot

Rekomendowane odpowiedzi

Tak więc, napisałem sobie kiedyś taki uploader. Był to dość dobry dodatek, do systemu download, który robiłem. Jednak, jak kumpel mi pokazał, jak łatwo można usunąć pliki przez ten mój uploader, to szybko zrezygnowałem z tego, ale download bez uploadera? Bo skrypt download już zabezpieczyłem, tylko upload jest niezabezpieczony, bo kompletnie nie wiem, jak się do tego zabrać. Czekam na porady itp.

Oto kod:

- upload.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-2">

  <meta name="generator" content="Notatnik">

  <meta name="author" content="Tomasz 'Marmot' S.">

  <title>Uploader</title>

  </head>

  <body>

    <form method="POST" enctype="multipart/form-data" action="upload.php">

    <input type="hidden" name="ok" value="1">

    <input type="hidden" name="MAX_FILE_SIZE" value="250000">

    <!-- pole "Przeglądaj" -->

    <input type="file" name="plik" size="40"><br>

    <!-- pole "Przeglądaj" -->

    <input type="submit" value="Uploaduj"><input type="reset" value="Reset"></p>

    </form>

  </body>

</html>

- upload.php

<?php

 

if($HTTP_POST_VARS['ok'] == 1){

if($HTTP_POST_FILES['plik']['size'] < 250000 && $HTTP_POST_FILES['plik']['size'] != 0){

if(is_uploaded_file($HTTP_POST_FILES['plik']['tmp_name'])){

copy($HTTP_POST_FILES['plik']['tmp_name'], "katalog/".$HTTP_POST_FILES['plik']['name']);

echo "Plik uploadowany";

}else{

die("Zła ścieżka.");

}

}else{

die("Nie można uploadować pliku - za duży, lub zerowy rozmiar.");

}

}

 

?>

 

Prosze o szybką pomoc, bo w PHP nie jestem aż tak zaawansowany, zaczynam przygodę z MYSQL i kompletnei nie wiem, jak to można bardziej zabezpieczyć.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

A ja bym dodatkowo stworzył jeszcze filtr plików, aby nikt nie wrzucił php :P

oraz dodatkowy filtr, czy plik czasem nie nzaywa się index.jpg.php, bo po pierwszym zabezpieczeniu istnieje mozliwość zrobienia czegoś takiego.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Nie jest możliwe, o ile pierwszy filtr się dobrze napisze. Wystarczy zwrócić string z nazwy zaczynający się od ostatniej kropki, a potem sprawdzić czy znajduje się on w tablicy dopuszczalnych rozszerzeń. Kombinacja substr+strrpos* daje radę. :)

 

 

*Tak, dwukrotnie r.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...