Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Usuwanie pliku przez użytkownika
tosiek
post
Post #1





Grupa: Zarejestrowani
Postów: 142
Pomógł: 0
Dołączył: 7.07.2008

Ostrzeżenie: (0%)
-----


Witam. Mam prosty zamiar dać użytkownikowi możliwość usunięcia pliku.

Aktualnie zapisuję sobie:
  1. <?php
  2. $czas = time();
  3. $nazwa = $czas . $_FILES['userfile']['name'];
  4. file_put_contents(dirname(__FILE__) . "/../../../../wynikowe/" . $nazwa, $plik);
  5. ?>


No i podaję bezpośredni link do pobrania. I link do usunięcia który działa w ten sposób:
  1. <?php
  2. if(isset($_GET['usun']))
  3. {
  4. unlink(dirname(__FILE__) . "/../../../../wynikowe/" . urldecode($_GET['usun']));
  5. echo "plik usuniety";
  6. }
  7. echo '<a href="http://tosiek.pl/converter/?usun=' . urlencode($nazwa) . '">Usuń plik: ' . $_FILES['userfile']['name'] . '</a>';
  8. ?>


I teraz pytanie czy przez to unlink da się usunąć inne pliki, poza katalogiem wynikowe ? I jak to zabezpieczyć ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tosiek
post
Post #2





Grupa: Zarejestrowani
Postów: 142
Pomógł: 0
Dołączył: 7.07.2008

Ostrzeżenie: (0%)
-----


tym razem napisalem coś takiego:

tablica danger:
Kod
$danger = array("../", "./", "//", "/", "\\\\", "\\", ".htaccess", "index.htm", );


  1. <?php
  2. if (isset($_GET["usun"]))
  3. {
  4.    $usun = urldecode($_GET['usun']);
  5.  
  6.    if(!file_exists(dirname(__FILE__) . "/../../../../wynikowe/" . realpath($usun)))
  7.    {
  8.        echo "<h2><span style=\"color:red;\">Plik nie istnieje lub został już usunięty</span></h2>";
  9.    }
  10.    else
  11.        {
  12.        if(preg_match("|" . $danger . "|", $usun))
  13.        {
  14.            echo "<h2><span style=\"color:red;\">Zabraniam Ci usuwania...</span></h2>";
  15.  
  16.        }
  17.        else
  18.        {
  19.            if (unlink(dirname(__FILE__)."/../../../../wynikowe/".$usun))
  20.                {
  21.                echo"<h2><span style=\"color:green;\">Usunięto plik $usun</span></h2>";
  22.                }
  23.            else
  24.                {
  25.                echo"<h2><span style=\"color:red;\">Błąd usuwania {$usun}</span></h2> <p>$php_errormsg</p>";
  26.                }
  27.        }
  28. }
  29. }
  30. ?>


ale już nie mam pomysłu czemu nadal moge usuwać ../plik.php .htaccess i inne ;/

zmiana:
!file_exists(dirname(__FILE__) . "/../../../../wynikowe/" . realpath($usun))
na
!file_exists(realpath(dirname(__FILE__) . "/../../../../wynikowe/" . $usun))

nic nie zmienia (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) a innych pomysłów nie mam ;/

Ten post edytował tosiek 15.07.2009, 10:19:56
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 1.01.2026 - 15:14