Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace core;
- use core\Session;
- use core\router\Router;
- class CSRFToken{
- private static $sessionKey = 'csrf_token';
- public static function generateToken(){
- $token = bin2hex(random_bytes(32));
- Session::put(self::$sessionKey, $token);
- return $token;
- }
- public static function getToken(){
- if(Session::has(self::$sessionKey)){
- return Session::get(self::$sessionKey);
- }
- return self::generateToken();
- }
- public static function validateToken($token){
- if(self::getToken() && hash_equals(Session::get(self::$sessionKey), $token ?? '')){
- return true;
- }
- return false;
- }
- public static function clearToken(){
- Session::forget(self::$sessionKey);
- }
- public static function authorize($token){
- if(!self::validateToken($token)){
- (new Router)->abort(405);
- }
- self::clearToken();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement