Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> [PHP]Zabezpieczenie skryptu php
gregi1
post 3.10.2009, 21:22:58
Post #1





Grupa: Zarejestrowani
Postów: 134
Pomógł: 0
Dołączył: 24.03.2007

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


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?


--------------------
Go to the top of the page
+Quote Post
zegarek84
post 3.10.2009, 21:35:31
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


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....)


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
maniekl2
post 3.10.2009, 21:39:42
Post #3





Grupa: Zarejestrowani
Postów: 162
Pomógł: 29
Dołączył: 6.04.2008

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


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. }
Go to the top of the page
+Quote Post
gregi1
post 4.10.2009, 08:14:15
Post #4





Grupa: Zarejestrowani
Postów: 134
Pomógł: 0
Dołączył: 24.03.2007

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


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?


--------------------
Go to the top of the page
+Quote Post
recces
post 4.10.2009, 09:38:36
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 11.02.2004
Skąd: Torun

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


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.

Go to the top of the page
+Quote Post
maniekl2
post 4.10.2009, 09:55:56
Post #6





Grupa: Zarejestrowani
Postów: 162
Pomógł: 29
Dołączył: 6.04.2008

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


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ć

Go to the top of the page
+Quote Post
Spawnm
post 4.10.2009, 11:57:16
Post #7





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Temat poruszany wielokrotnie , szukanie nie boli.
Zamykam.
Go to the top of the page
+Quote Post

Closed 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: 18.07.2025 - 04:27