HEX
Server: Apache
System: Linux server1.myinter.net 4.18.0-553.147.1.el8_10.x86_64 #1 SMP Fri Jul 24 08:29:05 EDT 2026 x86_64
User: internet (1005)
PHP: 8.4.23
Disabled: passthru,system
Upload Files
File: /home/internet/public_html/app/middleware/CsrfToken.php
<?php

namespace Fir\Middleware;

use Fir\Languages\Language as Language;

/**
 * Class CsrfToken ensures that all POST requested have a valid CSRF Token
 */
class CsrfToken {

    public function __construct() {
        $this->generateToken();
        $this->validateToken();
    }

    /**
     * Validate the CSRF token
     */
    private function validateToken() {
        if(isset($_POST) && !empty($_POST)) {
            if($_POST['token_id'] != $_SESSION['token_id']) {
                $lang = (new Language())->set();

                $_SESSION['message'][] = ['error', $lang['token_mismatch']];

                // Redirect to the requested location
                header("Location: " . URL_PATH . '/' . $_GET['url']);

                // Prevent anything else from executing on the page
                exit;
            }
        }
    }

    /**
     * Generate and set a random token to prevent CSRF
     */
    private function generateToken() {
        // If there isn't any sessions set, or if the session is empty
        if(!isset($_SESSION['token_id']) || empty($_SESSION['token_id'])) {
            // Generate a random session token
            $token_id = hash('sha256', substr(str_shuffle('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), 0, 10));

            // Store the token in the session
            $_SESSION['token_id'] = $token_id;
        }
    }
}