Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]problem z csrf
Forum PHP.pl > Forum > Przedszkole
viamarimar
Mam problem przy generowaniu kodow csrf dla formularza. Kod generowany w sesji nie zgadza sie z przesylanym w post, chodz jest to teoretycznie ten sam token.

1. Dodałem przy zalogowaniu pierwszy token
  1. $_SESSION['token'] = randTokenCSRF();
  2. $_SESSION['time'] = $_SERVER["REQUEST_TIME"];

2. W pliku index ktory jakby spaja wszystkie pliki gdyz struktura jest
index.php?a=cos&b=cos&c=cos
dodalem:
  1. @$token = $_SESSION['token'];
  2. var_dump($_SESSION['token']);
  3. var_dump($token);
  4. $delta = 86400;
  5. $tstamp = $_SESSION['time'];
  6.  
  7. if(isset($token) && isset($tstamp) ){
  8. if($_SERVER["REQUEST_TIME"] - $_SESSION['time'] > $delta){
  9. header("location: index.php?k=csrf");
  10. echo '1';
  11. }
  12. else{
  13. $_SESSION['token'] = randTokenCSRF();
  14. $_SESSION['time'] = $_SERVER["REQUEST_TIME"];
  15. $token = $_SESSION['token'];
  16. $token = $_SESSION['token'];
  17. echo '2';
  18. }


3. W formularzu:
  1. <input type="hidden" name="token" value="<?php echo $token; ?>">


4. Po wyslaniu sprawdzam dumpem czy sie zgadza:
  1. var_dump($_POST['token']);
  2. niestety tokeny sa inne
  3. var_dump($_SESSION['token']);



-Wydaje mi sie ze problem jest gdzies w plikach index, lecz nie jestem swiadom gdzie konkretnie.

Prosze o uświadomienie.
com
problem to jest ta sesja bo w miedzy czasie zmienia Ci się tam stan, o czym php wie w następnym requescie, a tam zmieniasz go znów wink.gif
viamarimar
domyślam, się że problem jest z sesją, a jakiś pomysł na rozwiązanie?
com
Zerknij tutaj:
http://stackoverflow.com/a/31683058
viamarimar
przedstawione tam rozwiazanie raczej utrudnia problem niz pomaga go rozwiazac ;/

  1. if(empty($_SESSION['token'])) {
  2. if (function_exists('mcrypt_create_iv')) {
  3. $_SESSION['token'] = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));
  4. } else {
  5. $_SESSION['token'] = bin2hex(openssl_random_pseudo_bytes(32));
  6. }
  7. }
  8. $token = $_SESSION['token'];


coś takiego by niby bylo lepsze? a co z unikalnoscia tego tokena?

czy token csrf powinien byc generowany raz czy wielokrotnie? bo słyszałem już różne opinie?
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.