Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Bezpieczeństwo skrypciku - eval();, Prośba o opinie...
ixpack
post 10.12.2010, 14:27:39
Post #1





Grupa: Zarejestrowani
Postów: 248
Pomógł: 55
Dołączył: 1.06.2010
Skąd: mam to wiedzieć?

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


Napisałem niżej podany kod... Wszystko działa tak jak chcę, ale chciałbym zaciągnąć waszej opinii - czy jest to "bezpieczne"? Wyczytałem na jakimś blogu (nie mogę go znaleźć), że eval(); to zło... - jednak nigdy nie potrzebowałem tego stosować i dlatego "zignorowałem" artykuł - a teraz mam wątpliwości i chciałbym zaciągnąć waszej opinii.

Kiedy można, a kiedy nie wolno stosować eval();? W skrypcie eval nie wywołuje żadnej funkcji, jedynie ify i switche.

Zmienna $lista_voucherow to tablica, która będzie pobrana z bazy danych klienta X - klient nie wprowadza żadnych danych aby tablicę pobrać - dzieje się to w momencie udanego zalogowania.

  1.  
  2. $lista_voucherow = array('10% Off', '20% Off', '30% Off', '40% Off');
  3.  
  4. $control = 0;
  5. foreach ($lista_voucherow as $voucher) {
  6. if ($_GET['v_off'] == 'a'.$control);
  7. else $v.= '<li><a href="./tests.php?v_off=a'.$control.'">'.$voucher.'</a></li>';
  8. $test[$control] = $voucher;
  9. $control++;
  10. }
  11.  
  12. $n=0;
  13. $ax = 'if (($_GET['."'v_off'] && ".'$_GET['."'v_off'] == 'X')";
  14. $case = 'switch($v_off) {';
  15. while($n <= $control-1)
  16. {
  17. $ax.= ' or ($_GET['."'v_off'] && ".'$_GET['."'v_off'] == 'a".$n."')";
  18. $case.= 'case '."'a".$n."'".': $xyz = $v_off; echo $v_off.'."'<br /> <a href=./tests.php?v_off=X>REMOVE '.".'$test['.$n.'].'."'</a>'".';
  19. $_SESSION['."'v_off'] = 'a".$n."'".'; break; ';
  20. $n++;
  21. }
  22.  
  23. $ax.=') $v_off = $_GET['."'v_off']; else ".'$v_off = $_SESSION['."'v_off'];";
  24. $case.='case '."'X'".': echo '."'xxxxx'; ".'unset($_SESSION['."'v_off'".']); break; }';
  25.  
  26. eval($ax).'<br />';
  27. eval($case);
  28.  
  29. $controla = 0;
  30. foreach ($lista_voucherow as $voucher) {
  31. if ($xyz == 'a'.$controla);
  32. else $va.= '<li><a href="./tests.php?v_off=a'.$controla.'">'.$voucher.'</a></li>';
  33. $controla++;
  34. }
  35.  
  36. echo $va;


--------------------
Łatwo jest być odważnym za murami własnego zamku.
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.08.2025 - 07:47