Пример #1
0
 /**
  * Validates a csrf enabled form
  */
 public static function csrfValidate()
 {
     if (class_exists('\\Riimu\\Kit\\CSRF\\CSRFHandler')) {
         $csrf = new \Riimu\Kit\CSRF\CSRFHandler(false);
         try {
             $csrf->validateRequest(true);
         } catch (\Riimu\Kit\CSRF\InvalidCSRFTokenException $ex) {
             log::error($ex->getMessage());
             http::locationHeader('/error/accessdenied', 'Bad request');
             return false;
         }
     }
     return true;
 }
Пример #2
0
<?php

require __DIR__ . '/../vendor/autoload.php';
$csrf = new \Riimu\Kit\CSRF\CSRFHandler();
try {
    $csrf->validateRequest(true);
} catch (\Riimu\Kit\CSRF\InvalidCSRFTokenException $ex) {
    header('HTTP/1.0 400 Bad Request');
    exit('Bad CSRF Token!');
}
$token = $csrf->getToken();
?>
<!DOCTYPE html>
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Simple Form</title>
 </head>
 <body>
<?php 
if (!empty($_POST['my_name'])) {
    printf("  <p>Hello <strong>%s</strong>!</p>" . PHP_EOL, htmlspecialchars($_POST['my_name'], ENT_QUOTES | ENT_HTML5, 'UTF-8'));
}
?>
  <h3>Form with a CSRF token:</h3>
  <form method="post"><div>
    <input type="hidden" name="csrf_token" value="<?php 
echo htmlspecialchars($token, ENT_QUOTES | ENT_HTML5, 'UTF-8');
?>
" />
   What is your name?
Пример #3
0
 /**
  * Validate the CSRF token for all unsafe request methods
  *
  * @return boolean
  */
 private function csrfValid()
 {
     $safe_methods = ['get', 'head', 'options', 'trace'];
     $request_method = strtolower($this->request->getMethod());
     // test for valid CSRF token on all unsafe requests
     if (!in_array($request_method, $safe_methods)) {
         try {
             $csrf = new \Riimu\Kit\CSRF\CSRFHandler();
             $csrf->validateRequest(true);
         } catch (\Riimu\Kit\CSRF\InvalidCSRFTokenException $ex) {
             error_log('Bad or missing CSRF token: ' . $this->request->getURI());
             header('HTTP/1.0 400 Bad Request');
             exit('Bad CSRF Token');
         }
     }
     return TRUE;
 }