Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zabezpieczenie skryptu php
Forum PHP.pl > Forum > Przedszkole
gregi1
Mam taki problem otóż mam starą "prostą" stronę zrobioną na zasadzie ladowania na glownej stronie podstron, a mianowicie mam cos takiego:

[...]
  1. <div>
  2. <a href="index.php?page=home">Strona główna</a>
  3. <a href="index.php?page=inf">Informacje</a>
  4. </div>
  5.  
  6. <div>
  7. <?php
  8. $page=$_REQUEST['page'];
  9. if(!isset($page))
  10. $page='home';
  11. ?>
  12. <?php
  13. include($page.".php");
  14. ?>
  15. </div>


I administrator mojego hostingu zwrocil mi uwagę ze ktos może podac w adresie index.php?page=http://xxx.pl do strony ze zlosliwym kodem.

W jaki sposób mogę w najprostszy sposób zabezpieczyc taka strone aby nie dala sie zhakowac smile.gifquestionmark.gif? i odnosila tylko do stron w serwisie a nie do zewnetrznych adresow?
zegarek84
np. file_exists [czy plik istnieje na serwerze] i jeśli jeszcze chcesz kilka innych sposobów (w zależności od inwencji itd. możesz jeszcze sprawdzać przy pomocy wyrażeń regularnych czy to nie link itd....)
maniekl2
Możesz zrobić sobie array pages i sprawdzać czy istnieje taki element tablicy, np :
  1. $pages = array(index, login, strona);
  2. if(in_array($page, $pages)){
  3. //include
  4. }
gregi1
Cytat(maniekl2 @ 3.10.2009, 22:39:42 ) *
Możesz zrobić sobie array pages i sprawdzać czy istnieje taki element tablicy, np :
  1. $pages = array(index, login, strona);
  2. if(in_array($page, $pages)){
  3. //include
  4. }


Jako ze jestem laikiem stad moje pytanie, rozumiem ze najpierw musze wprowadzic te strony do array pages
A mozesz podac jakis przyllad jak je wprowadzic?
recces
Zainteresuj sie mod rewrite. Bardzo przydatna sprawa.
Na poczatek mozesz takze zastosowac switch'a :
  1. switch ($zmienna) {
  2.  
  3. case "wartosc_zmiennej_1" :
  4. include ("adres1.php");
  5. break;
  6.  
  7. case "wartosc_zmiennej_2" :
  8. include ("adres2.php");
  9. break;
  10.  
  11. case "":
  12. include ("page_404.php");
  13. break ;
  14.  
  15. }

To chyba najprostsza metoda na sam poczatek.

maniekl2
Ale switch zajmuje dużo miejsca i później można się tam pogubić.
Cytat
Jako ze jestem laikiem stad moje pytanie, rozumiem ze najpierw musze wprowadzic te strony do array pages
A mozesz podac jakis przyllad jak je wprowadzic?


Musisz po prostu wpisać parę elementów do tablicy:
  1. $pages = array('main', 'login', 'site1'); //...
  2. // czyli wpisujesz tutaj wszystkie strony jakie masz mieć

Spawnm
Temat poruszany wielokrotnie , szukanie nie boli.
Zamykam.
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.