Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [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
Mephistofeles
post 10.12.2010, 14:53:23
Post #2





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Po co tak robisz? To samo możesz zrobić normalnie. Eval jest zły, nie powinno się go używać.
Go to the top of the page
+Quote Post
ixpack
post 10.12.2010, 16:26:44
Post #3





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

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


;] normalnie czyli jak? Odpal skrypt i zobacz jak działa - zaznaczam lista voucherów jest zmienna, a chcę żeby działało tak jak działa winksmiley.jpg

Czyli:
wyświetlamy listę voucherów:
1) voucher a
2) voucher b ...itd.

Gdy klikam na voucher a - to znika on z listy, zostaje zaaplikowany i przypisany do sesji
Gdy aktywny jest voucher a, a kliknę na voucher b - to podmianka... voucher b jest aktywny, a a wraca na listę
Aktywny voucher ma link - do jego usunięcia, gdy go kliknę to wiadomo... Wraca na listę.

Podpowiedz proszę jak to zrobić normalnie smile.gif (pewnie za bardzo kombinuję i bardziej brnę w błoto :/)

Ten post edytował ixpack 10.12.2010, 16:35:32


--------------------
Łatwo jest być odważnym za murami własnego zamku.
Go to the top of the page
+Quote Post
Moli
post 10.12.2010, 16:38:05
Post #4





Grupa: Zarejestrowani
Postów: 662
Pomógł: 45
Dołączył: 26.03.2007
Skąd: Warszawa

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


Ajaxem smile.gif
Go to the top of the page
+Quote Post
ixpack
post 10.12.2010, 16:48:03
Post #5





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

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


No tak, jeszcze jakbym umiał to by to załatwiło sprawę.

Czas się w końcu nauczyć :/

Ok dzięki. Poszukam jakiegoś kodu do zerżnięcia i pomieszam - chyba, że ktoś na szybko mi tu maźnie "prototyp"?


--------------------
Łatwo jest być odważnym za murami własnego zamku.
Go to the top of the page
+Quote Post
Mephistofeles
post 10.12.2010, 18:31:25
Post #6





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Nie wiem czy dobrze rozumiem, ale nie możesz zapisać po prostu w sesji voucher => a, potem podmienić voucher => b?
Przez ten eval i generowanie kodu niewiele z tego zrozumiałem, Twój post także nie rozwiewa wątpliwości, wyjaśnij co konkretnie robi ten eval, albo daj przykładowy wygenerowany kod.
Go to the top of the page
+Quote Post

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: 28.04.2024 - 16:24