Advertisement
Guest User

Untitled

a guest
Aug 21st, 2024
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.02 KB | None | 0 0
  1. <?php
  2.  
  3. namespace core;
  4.  
  5. use core\Session;
  6. use core\router\Router;
  7.  
  8. class CSRFToken{
  9.  
  10.     private static $sessionKey = 'csrf_token';
  11.  
  12.     public static function generateToken(){
  13.  
  14.         $token = bin2hex(random_bytes(32));
  15.  
  16.         Session::put(self::$sessionKey, $token);
  17.  
  18.         return $token;
  19.  
  20.     }
  21.  
  22.     public static function getToken(){
  23.  
  24.         if(Session::has(self::$sessionKey)){
  25.  
  26.             return Session::get(self::$sessionKey);
  27.  
  28.         }
  29.  
  30.         return self::generateToken();
  31.  
  32.     }
  33.  
  34.     public static function validateToken($token){
  35.  
  36.         if(self::getToken() && hash_equals(Session::get(self::$sessionKey), $token ?? '')){
  37.  
  38.             return true;
  39.  
  40.         }
  41.  
  42.         return false;
  43.  
  44.     }
  45.  
  46.     public static function clearToken(){
  47.  
  48.         Session::forget(self::$sessionKey);
  49.  
  50.     }
  51.  
  52.     public static function authorize($token){
  53.  
  54.         if(!self::validateToken($token)){
  55.  
  56.             (new Router)->abort(405);
  57.  
  58.         }
  59.  
  60.         self::clearToken();
  61.  
  62.     }
  63.  
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement