Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Pobieranie plików z kilku folderów
kamilns
post 30.07.2007, 15:17:03
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 30.07.2007

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


Witam Serdecznie


Posiadam stronę opartą na php. Pliki (tekstowe) są ciągnięte z folderu o nazwie "site" np. plik o nazwie prawo.txt ma adres www.kowalski.pl/prawo.html (maskowanie urli mam także)

Potrzebuję zrobić aby pliki były dodatkowo ciągnięte jeszcze z jednego katalogu - oprócz katalogu site jeszcze z katalogu o nazwie: "inne"

Bardzo proszę o pomoc w przerobieniu tego kodu (wnioskuje, że to on odpowiada za to - chyba środkowa część tego kodu):

<?php
if ($_GET['pg'] == "") {

include ('site/main.php');

} else {

include ("site/$_GET[pg].php");
}
echo '<br>';
$cnt->draw();
?>


Bardzo proszę o przerobienie tego w miarę możliwości - ja niestety nie mam o tym zielonego pojęcia jak modyfikować taki kod. Będę bardzo wdzięczny za uzyskaną pomoc.


Kamil

Ten post edytował kamilns 30.07.2007, 18:55:06
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
wlamywacz
post 31.07.2007, 10:40:29
Post #2





Grupa: Zarejestrowani
Postów: 535
Pomógł: 27
Dołączył: 3.05.2005

Ostrzeżenie: (20%)
X----


Można jaśniej ? A i na moje oko ten kod jest troszkę niebezpieczny z tym includowaniem tongue.gif
Go to the top of the page
+Quote Post
pojas
post 31.07.2007, 14:58:15
Post #3





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 31.03.2006

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


  1. <?php
  2. if( file_exists( './site/'.$_GET['pg'].'.php' ) && ! file_exists( './inne/'.$_GET['pg'].'.php' ))
  3. {
  4. // jeśli plik istnieje (TYLKO w folderze "site") wczytuje jego kod
  5. include( './site/'.$_GET['pg'].'.php' );
  6.  
  7. } elseif( file_exists( './inne/'.$_GET['pg'].'.php' ) && ! file_exists( './site/'.$_GET['pg'].'.php' ) )
  8. {
  9. // jeśli plik istnieje (TYLKO w folderze "inne") wczytuje jego kod
  10. include( './inne/'.$_GET['pg'].'.php' );
  11. } else
  12. {
  13. // w przeciwnym przypadku wczytuje kod pliku "main.php"
  14. // czyli także w przypadku takich samych plików w folderach "site" i "inne"
  15. include( './site/main.php' );
  16. }
  17. ?>


O to chodzi? guitar.gif
Go to the top of the page
+Quote Post
kamilns
post 31.07.2007, 16:23:07
Post #4





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 30.07.2007

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


Bardzo ale to bardzo dziękuję "Pojas" snitch.gif Śmiga aż miło. Mam jeszcze jedno pytanie w związku z tym - czy jest to bezpieczne dla strony ? (ten kod odpowiada za wyświetlanie mojej strony - plików - treści. Użytkownik "włamywacz" stwierdził, że może to być niebezpieczne.
Go to the top of the page
+Quote Post
pojas
post 31.07.2007, 16:48:18
Post #5





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 31.03.2006

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


Wydaje mi się, że jest dobrze. Jednak mogę się mylić tongue.gif

Cytat
na moje oko ten kod jest troszkę niebezpieczny

Możliwe, że chodziło mu o to, że wczytywanie pliku "na ślepo" jest niebezpieczne, bo włamywacz może wklepać magiczny adres a wczytany zostanie kod niekoniecznie z Twojego serwera, niekoniecznie bezpieczny i przyjazny kod guitar.gif ( przeczytaj ten post, a najlepiej cały temat ).
Nie wydaje mi się, żeby taki chwyt można było zastowować na tym skrypcie.

Ten post edytował pojas 31.07.2007, 16:49:19
Go to the top of the page
+Quote Post
envp
post 31.07.2007, 16:54:16
Post #6





Grupa: Zarejestrowani
Postów: 359
Pomógł: 1
Dołączył: 16.04.2006
Skąd: Łódź

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


a co da :

?pg=../../../../../../../../../../../etc/passwd%00

snitch.gif
Go to the top of the page
+Quote Post
pojas
post 31.07.2007, 17:41:43
Post #7





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 31.03.2006

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


Cytat
Rozwiązanie 1.

Tworzymy taki include:
Kod php
  1. <?php
  2. include('./'.$_GET['katalog']);
  3. ?>


Taka instrukcja pozwala na dołączanie jedynie plików które znajdują się w katalogu ze skryptem czyli nie można załączyć pliku z innego serwera.


./ jest w kodzie...hmm
Pewnie chodzi o wyświetlenie tajnego pliku w ramach serwera, ale czy te ./ nie jest rozwiązaniem? Jeśli nie jest, moża wykorzystać funkcję ctype_alnum:
  1. <?php
  2. if( ctype_alnum($_GET['pg']) == true || $_GET['pg'] == '' )
  3. {
  4. if( file_exists( './site/'.$_GET['pg'].'.php' ) && ! file_exists( './inne/'.$_GET['pg'].'.php' ))
  5. {
  6. // jeśli plik istnieje (TYLKO w folderze "site") wczytuje jego kod
  7. include( './site/'.$_GET['pg'].'.php' );
  8.  
  9. } elseif( file_exists( './inne/'.$_GET['pg'].'.php' ) && ! file_exists( './site/'.$_GET['pg'].'.php' ) )
  10. {
  11. // jeśli plik istnieje (TYLKO w folderze "inne") wczytuje jego kod
  12. include( './inne/'.$_GET['pg'].'.php' );
  13. } else
  14. {
  15. // w przeciwnym przypadku wczytuje kod pliku "main.php"
  16. // czyli także w przypadku takich samych plików w folderach "site" i "inne"
  17. include( './site/main.php' );
  18. }
  19. }
  20. ?>

Teraz jest bezpieczniej? Teraz jest bezpiecznie ? guitar.gif
Go to the top of the page
+Quote Post
kamilns
post 31.07.2007, 19:45:33
Post #8





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 30.07.2007

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


Nie znam się na tym ale pewnie jest bezpieczniej ;-) Dziękuję "Pojas" za okazaną mi pomoc. Masz duże piwo u mnie ;-)
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 21:26