2016-02-14 7 views
0

Я использую phalcon 2.0.9.Ошибка Phalcon csrf на сервере

У меня есть форма входа в систему, с защитой csrf.

Это код в виде:

<input type='hidden' id='token' name='{{ security.getTokenKey() }}' value='{{ security.getToken() }}' /> 

И это проверка в контроллере:

if(!$this->security->checkToken()) { 
    // error code here 
} 

Он отлично работает на локальном хосте, butn, когда я загрузить его на сервер, он всегда терпит неудачу. Я использую ajax для входа в систему. После запроса на отправку токен csrf в сеансе отличается от токена в сообщении.

Что может быть причиной этого?

+0

Любая ошибка в консоли? –

+0

«... он всегда терпит неудачу». Каким образом это не удается? Вы получаете сообщения об ошибках? Например, в журнале сервера? – Kenster

+0

$ this-> security-> checkToken() возвращает false, даже если я пытаюсь войти в систему после загрузки страницы. Похоже, после создания страницы входа в систему, csrf изменяется, но я не знаю, где и почему. – th13f89

ответ

0

Credit: Daniel @ https://forum.phalconphp.com/discussion/922/csrf-protection-not-working

Убедитесь, что вы используете последнюю версию Phalcon на сервере, а также
И либо использовать серверные конфигурации, предоставляемые пользователями на форуме или переместить NOTFOUND (404) к контроллеру, который не включает CSRF TokenKey & Генерация ключей на его представлении.

Когда есть элемент favion/robot.txt/img и т. Д., Который не найден на сервере, это приводит к действию 404, и вы получаете регенерированные токены CSRF.

Надеюсь, что это поможет.