/** * Проверка CSRF-токена * * Если поле с токеном не задано, не выполнять проверку. Если не пройдет проверку, пробрасываем исключение. * * @return true * @throws \LogicException * @throws \RuntimeException с кодом 400, если токен неверный. */ private function checkСsrfToken() { if (!$this->csrfField) { return true; } $method = Request::method(); if (!in_array($method, ['GET', 'POST'])) { throw new \LogicException('Проверка CSRF токена возможна только при передаче формы методами GET или POST' . PHP_EOL . 'Текущий метод определен, как ' . $method); } $method = strtolower($method); $token = Request::$method($this->csrfField); if (!Request::validateCsrfToken($token)) { throw new \RuntimeException('Неверный CSRF токен', 400); } return true; }