Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] md5 i nazwy plików
Forum PHP.pl > Forum > Przedszkole
julek12
Witam,
Mam takie pytanie. Ponieważ wszyscy mówią, że niebezpiecznie jest includować plik z GET'a, ale ja wpadłem na pomysł żeby nazwy plików były szyfrowane w md5 i GET także bez żadnych innych zabezpieczeń. Czy jest to dobre rozwiązanie czy niekoniecznie.
Agape
Nie jestem expertem, ale myślę, że to genialne. Osoba nie będzie miała dostępu do "normalnych" plików, tylko tylko do tych których nazwa jest zmieniona przez MD5. Ale i tak chyba trzeba filtrować dane od użytkownika, żeby nie wstrzyknął kodu który wykona dodatkowo coś innego.
wookieb
No to bedziesz miał cholernie przyjazne urle...
Jest wiele innych rozwiązań opartych np o modrewrite i proste filtrowanie danych w urlu. To nie jest takie trudne.
julek12
Ja myślałem o czymś takim:
kod strony....
  1. if (file_exists('./'.md5($_GET["adres"]).'.php'))
  2. {
  3. include('./'.md5($_GET["adres"]).'.php');
  4. }
  5. else
  6. {
  7. include('./cos.php');
  8. }

i mam normalnie index.php?adres=podstrona
albo moge zastosować mod_rewrite, ale co o tym sądzicie?
skowron-line
@julek12 słabe
  1. echo md5( 'plik.php' );

Kod
027e6723308699e906f39677430320b4

Według mnie to jest żadne zabezpieczenie tym bardziej że md5 został złamany i jak już to sha256.
piotr94
Cytat(skowron-line @ 21.11.2009, 09:41:47 ) *
md5 został złamany

a skąd masz takie informacje?? mógłbyś podać źródło bo jest to ciekawe...
co do zabezpieczenia geta są 2 opcje:
1.
  1. $_GET['strona']=st_replace('..','_',$_GET['strona']);
  2. include('./katalog_ze_skryptami/'.$_GET['strona'].'.php');

tu zabezpieczenie polega na tym że wtedy unikasz zmiany katalogu na inny niż wskazany i dołączania plików poprzez http://
2.
  1. switch($_GET['strona']){
  2. case 'jakas_strona':
  3. include('./katalog_ze_stronami/jakas_strona.php');
  4. break;
  5. default:
  6. include('./katalog_ze_stronami/podana_strona_nie_jest_dozwolona.php');
  7. break;
  8. }

tu używasz switcha, który dopuszcza na includoiwanie tylko plików przez Ciebie dozwolonych, w przypadku próby oszukania systemu zostanie dołączony plik podany w warunku default:
można także użyć tablicy plików dozwolonych, czyli metoda 3:
  1. $dozwolone_strony = array('dozwolona_strona','dozwolona_strona2');
  2. if(in_array($_GET['strona'],$dozwolone_strony)){
  3. include('./katalog_ze_stronami/'.$_GET['strona'].'.php');
  4. }

osobiście polecam zawsze, dla zachowania porządku umieszczać wszystkie pliki do dołączenia w jednym katalogu, żeby na serwerze był porządek, czyli tak jak w przykładach /katalog_ze_stronami
a co do Twojej metody z md5, to trochę to zrobi bałaganu na serwerze z nazwami plików (po prostu przy 100 możliwych plikach do dołączenia odnalezienie właściwego będzie graniczyć z cudem), a są duuużo prostsze metody skutecznie zabezpieczające stronę, jak w moim poście przeczytałeś
julek12
To są tylko moje rozważania ja sam mam takie zabezpieczenie:
  1. <?php
  2. if (file_exists('./includes/szablon/podstrony/'.trim(strip_tags(basename($_GET["adres"]))).'.php'))
  3. {
  4. include('./includes/szablon/podstrony/'.trim(strip_tags(basename($_GET["adres"]))).'.php');
  5. }
  6. else
  7. {
  8. include('./includes/szablon/podstrony/news.php');
  9. }
  10. ?>
skowron-line
Cytat(piotr94 @ 21.11.2009, 10:23:05 ) *
a skąd masz takie informacje?? mógłbyś podać źródło bo jest to ciekawe...

Się czyta prasę kolorową.
http://www.md5crack.com/crackmd5.php proszę bardzo hasło dla gógla to "md5 cracker"
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.