Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Token dla csrf
marcio
post
Post #1





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Witam mam taki glupi problem oto maja taki kod:
http://pyp.net.pl/source/4f1ad742429ff
No i o ile pokazuje nam ze token wygenerowany i wpisany w html jako pole hidden jest taki sam jak ten z sesji przed wyslaniem formularza, to juz po wyslaniu formularza ten z $_POST['token'] zmienia.

Problem banalny ale stwarza mi wiecej problemow niz te bardziej skomplikowane.

Tutaj mozna sobie zobaczyc http://marcio.ekmll.com/formbuilider/index...news&id=301
login: ebreo
pass: qwerty

Ten post edytował marcio 21.01.2012, 16:18:29
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
marcio
post
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat(szmerak @ 21.01.2012, 20:47:43 ) *
Ty wogóle nie przekazujesz nigdzie tokena.
Żadnego inputa nie ma.

Mam nadzieje że o to ci chodzi.
Pozdrawiam.

Tak jak napisal @mortus prosze najpierw dobrze sprawdzic i pozniej ewentualnie wyciagac wnioski.

@mortus masz racje ze generowanie powinno byc w czasie wysylania formularza bo tak jak mowisz token w moim przypadku bedzie generowal sie x2, w czasie ladowania formularza i w czasie jego wyslania zgadzam sie.

Ale wtedy musze recznie ustawic token jesli mam go uzyc po wyslaniu formy, nie moge uzyc pola typu hidden do formularza bo formularz jest wyswietlany 1 raz przed jego wyslalniem potem nie tworze juz formularza.

Czyli mam:
  1. //tworzenie pola typu hidden dla tokenu
  2. $this -> form_builider -> add_field('token');
  3. $this -> form_builider -> set_token_value($token);
  4. $this -> form_builider -> add_form_action(array('action' => 'update_'.$table));

A dopiero potem:
  1. if(isset($_POST['submit_formy']))
  2. {
  3. //walidacja,zapis itp...itd...
  4. }

Czyli musze to zrobic bez niewidocznego pola.

Cytat
EDIT: Zapomniałem o jeszcze jednej ważnej kwestii. Chodzi o to, czym mianowicie jest $this->security, bo mogę jedynie zgadywać. W każdym bądź razie istotnym jest, aby ten obiekt (bo chyba to jest obiekt) przechowywał wygenerowany token np. w sesji czy w bazie danych. Mam nadzieję, że to robi, bo inaczej to nie mamy o czym rozmawiać

Pewnie to jest oczywiste (IMG:style_emoticons/default/wink.gif)
  1. /**
  2. *Generuje token dla csrf
  3. *@access public
  4. *@return string
  5. */
  6. public function csrf_token_generate()
  7. {
  8. if($this -> is_csrf())
  9. {
  10. $token = substr(md5(uniqid()), 1, 10);
  11. $_SESSION['token'] = $token;
  12. return $token;
  13. }
  14.  
  15. return null;
  16. }
  17.  
  18.  
  19. /**
  20. *Sprawdza zgodnosc tokenu z get'a z tym z zapisanym w sesji
  21. *@access public
  22. *@return bool
  23. */
  24. public function csrf_check_token()
  25. {
  26. if($this -> csrf)
  27. {
  28. if($_POST['token'] == $_SESSION['token'])
  29. return true;
  30. else
  31. throw new Volta_Admin_Generator_Csrf_Exception("Zly token.");
  32. }
  33.  
  34. return null;
  35. }


Dzieki za odp.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 04:14