Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Bezpieczeństwo tego GET'a
Forum PHP.pl > Forum > Przedszkole
ArekJ
Witam,
chciałbym się dowiedzieć czy skrypt ten jest bezpieczny:
  1. <?php
  2. $akcja = $_GET['akcja'];
  3. if($akcja != NULL AND file_exists($akcja.".php")){
  4. include ''.$akcja.'.php';
  5. echo $tekst;
  6. }
  7. else{
  8. echo 'TEST';
  9. }
  10. ?>

Jeżeli nie to jakie trzeba zastosować w nim zmiany?
Gacek89
nie jest bezpieczny
tz tak mi se wydaje
niepowinno sie includowac rzeczy z get, ale moge sie mylić bo zstosowałes tutaj sprwdzenie czy taki plik istnieje
ArekJ
Cytat(Gacek89 @ 2.12.2008, 16:11:30 ) *
nie jest bezpieczny


No dobrze, ale można by było trochę bardziej rozbudować to zdanie? Dlaczego nie jest bezpieczny? Jak go zabezpieczyć?

@up Gacek89 edytował post w trakcie wysyłania mojego tongue.gif
Czekam na dalszze uwagi i ew. pomoc
Darti
bo zrobie u siebie plik pod adresem: http://moserwis/aaa.php a tobie podam zmienną w get akcja=http://moserwis/aaa
ArekJ
No, a nie zabezpiecza wykonania tego skryptu to, że to co ma się wyświetlić przechowuję w zmiennej $tekst?
wookieb
Sprawdz jeszcze czy plik nie zaczyna sie od "http://"
decha-design
nie, bo to i tak wykona skrypt zewnetrzny a i w zmiennej $tekst bedzie NULL ...

korzystaj z basename" title="Zobacz w manualu PHP" target="_manual i ze sprawdzaniem czy taki plik istnieje w danych katalogu (np. tak ./includes/xxx gdzie xx to dany plik) ... a jak masz mało tych plików ktore chcesz includowac ... to switch
Gacek89
sprawdz tez jak reaguje na includowanie samego siebiem czy sie skrypt tak niezapentli
ArekJ
No i właśnie... zapentla się... A jak zrobić, żeby sprawdzał czy plik nie zaczyna się od http://?

EDIT:
Zrobiłem takiego if'a:
  1. <?php
  2. if($akcja != NULL AND file_exists($akcja.".php" AND $akcja != http)){
  3. ?>

Ale mam wrażenie, że to nie ma prawa działać, a inaczej nie umime...
wookieb
Cytat(ArekJ @ 2.12.2008, 16:29:24 ) *
A jak zrobić, żeby sprawdzał czy plik nie zaczyna się od http://?


http://php.net/strpos
ArekJ
Zastosowałem to co podał wookieb i wyszło mi takie coś:

  1. <?php
  2.                                      $akcja = $_GET['akcja'];
  3.                                      $test1 = $akcja;
  4.                                      $test2 = 'http://';
  5.                                      $test3 = strpos($test1, $test2);
  6.                                      if($akcja != NULL AND file_exists($akcja.".php" AND $test3 === false)){
  7.                                      include ''.$akcja.'.php';
  8.                                      echo $tekst;
  9.                                      }
  10.                                      else{
  11.                                      echo 'TEST';
  12.                                      }
  13.                                      ?>

Ale jak sprawdzić czy to działa?
ArekJ
O @bełdzio dzięki za świetny artkył skorzystam! Temat chyba skończony, te zabezpieczenia powinny wystarczyć smile.gif
artur_dziocha
Temat: Bezpieczenstwo_skryptow_PHP
a może ten temat??
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.