EGOCMS  24.0
EGOTEC Content-Managament-System
Ego_ValidateForm.php
gehe zur Dokumentation dieser Datei
1 <?php
2 
12  public const NAME = 'validate';
13 
20  public static function setToken($name = self::NAME) {
21  // Wenn checkForm Parameter übergeben
22  if ($_REQUEST['checkForm'][$name]) {
23  // Speichere in Session
24  if (!is_array($_SESSION['checkForm'])) {
25  $_SESSION['checkForm'] = [];
26  }
27  $_SESSION['checkForm'][$name] = $_REQUEST['checkForm'][$name];
28  session_write_close();
29  session_start();
30  }
31  }
32 
39  public static function removeToken($name = self::NAME) {
40  unset($_SESSION['checkForm'][$name]);
41  }
42 
49  public static function validateToken($csrf = false, $name = self::NAME) {
50  $checkForm = false;
51  session_start();
52 
53  // Wenn checkForm im Formular mitgegeben wird und nicht bereits in der Session gesetzt ist
54  if ($_REQUEST['checkForm'][$name] && $_SESSION['checkForm'][$name] !== $_REQUEST['checkForm'][$name]) {
55  $checkForm = true;
56 
57  // Wenn checkForm nicht im Formular gesetzt ist
58  } elseif (!$_REQUEST['checkForm'][$name]) {
59  $checkForm = true;
60  }
61 
62  if ($checkForm) {
63  self::setToken($name);
64  }
65 
66  if ($csrf) {
67  // Wenn csrf mit dem csrf in der Session übereinstimmt
68  // Wenn csrf nicht in der Session und nicht im Request vorhanden
69  if (($_REQUEST['csrf'][$name] && $_SESSION['csrf_token'][$name] == $_REQUEST['csrf'][$name])) {
70  return $checkForm;
71  }
72  } else {
73  return $checkForm;
74  }
75 
76  return false;
77  }
78 
85  public static function generateCSRF($name = self::NAME) {
86  // Speichere Token in der Session
87  if (!is_array($_SESSION['csrf_token'])) {
88  $_SESSION['csrf_token'] = [];
89  }
90  $_SESSION['csrf_token'][$name] = uniqid('', true);
91 
92  // Gebe CSRF Token aus
93  return '<input type="hidden" name="csrf['.$name.']" value="'.$_SESSION['csrf_token'][$name].'">';
94  }
95 
102  public static function generateToken($name = self::NAME) {
103  // Gebe hidden Input mit Check Token aus
104  return '<input type="hidden" name="checkForm['.$name.']" value="'. uniqid('', true) .'">';
105  }
106 }
static setToken($name=self::NAME)
static generateCSRF($name=self::NAME)
static validateToken($csrf=false, $name=self::NAME)
static generateToken($name=self::NAME)
static removeToken($name=self::NAME)