Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] upload - bezpieczeństwo
Forum PHP.pl > Forum > Przedszkole
puz219
Witam.

Mam skrypt, który uploaduje mi pliki na serwer.

Chciałbym, żeby pliki były zapisywane w głównym katalogu na serwerze (tam, gdzie plik index.php), lecz nie wiem czy to jest bezpieczne, gdyż muszę mu nadać atrybut 777, a jeśli zmienię na 750 (takie mam domyślne), to wtedy funkcja nie działa.

I teraz, czy to jest bezpieczne, czy raczej tak się nie powinno robić (chodzi o zmienianie atrybutów na 777)questionmark.gif?

Proszę o odp. lub jakieś rady jak ewentualnie zmodyfikować tą funkcję, żeby zapisywała pliki w folderze z atrybutem 750.

ewentualnie będę wdzięczny za jakiś inny sposób rozwiązania tego problemu.

Tu jest kod pliku upload.php
  1. <?php
  2. $plik_tmp = $_FILES['plik']['tmp_name'];
  3. $plik_nazwa = $_FILES['plik']['name'];
  4. $plik_rozmiar = $_FILES['plik']['size'];
  5. $plik_nazwa_znaki = znaki("$plik_nazwa");
  6.  
  7. if(is_uploaded_file($plik_tmp)) {
  8. move_uploaded_file($plik_tmp, "$plik_nazwa");
  9.  
  10. echo "Plik: <strong>$plik_nazwa</strong> o rozmiarze 
  11. <strong>$plik_rozmiar bajtów</strong> został pomyślnie przesłany na serwer!";
  12. }
  13. ?>


Pozdrawiam.
nevt
nie jest to bezpieczne. zrób podkatalog serwisu i tam nadaj uprawnienia do uploadu. jeśli koniecznie potrzebujesz tych plików tam gdzie index.php (ścieżki ci nie działają czy co?), to po uploadzie przenoś je tam skryptem po stronie serwera...
puz219
a czy jest jakaś funkcja, która do tego służy, czy może trzeba ją samemu napisać.

Proszę o jakieś wskazówki
marcio
ale o jaka funckje chodzi do czego?bo juz nie rozumiem
puz219
chodzi o funkcję, która przeniesie mi plik z jednego folderu na serwerze do drugiego folderu na tym samym serwerze.

Czy taka funkcja istnieje??
marcio
mozesz uzyc do tego copy() rename() lub nie wiem czy tak mozna ale moglbys je tez skopiowac za pomoca exec() system() lub fpassthru()
puz219
tylko, że znów jest problem.
Ani funkcja copy(), ani rename() nie działa.

Wyświetla sie błąd - PERMITION DENIED, co oznacza, że nie mam praw do zapisu pliku w tym folderze, chodzi o folder główny (chmod ustawione na 750).

Czy nie da się tego ominąć, bez zmieniania chmod-ów, bo jest to upload dostępny tylko dla użytkowników o prawach administratora serwisu, czyli jak narazie tylko dla mnie.

Proszę o pomoc.
Dudziński
Można spróbować

<?php
$lokalizacja = "/inny folder/".$nowanazwapliku;
move_uploaded_file($_FILES[$nazwapliku]['tmp_name'], $lokalizacja);
chmod($lokalizacja, 0777);
?>
puz219
wygląda na to, że i ta opcja nie działa, ale to jest nawet dobry pomysł, tylko, żeby to robiło w ten sposób, najpierw zmieniało chmod folderu głównego na 777, potem przenosiło do niego plik, a po tym zmieniało z powrotem chmod na 750.
Lecz funkcja chmod nie działa u mnie prawidłowo - brak dostępu.

czy ktoś ma jeszcze jakieś pomysły, bo mi sie już wyczerpały sciana.gif
marcio
a spruboj exec()
puz219
Ale funkcja exec()" title="Zobacz w manualu PHP" target="_manual to jest chyba do uruchomienia jakiegoś programu, o ile dobrze rozumuję z manuala, nie wiem jak za jej pomocą przenieść plik.

Mógłbyś i wyjaśnić?
marcio
nie wiem czy tak mozna zrobic ale jeste polecenie systemowe linux'a
Cytat
cp plik.php folder/sciezka

a win32 jest chyba copy ale nie wiem czy tak mozna zrobic nigdy nie probowalem
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.