<?php
namespace startmvc\core;
class Csrf
{
const CSRF_TOKEN_NAME = 'csrf_token';
public static function token()
{
$token = bin2hex(random_bytes(32)); Session::set(self::CSRF_TOKEN_NAME, $token);
return $token;
}
public static function check()
{
$postToken = Request::post(self::CSRF_TOKEN_NAME);
$sessionToken = Session::get(self::CSRF_TOKEN_NAME);
if ($postToken === null || $postToken !== $sessionToken) {
return false; }
self::unsetToken(); return true;
}
public static function unsetToken()
{
Session::delete(self::CSRF_TOKEN_NAME);
}
}