Токен CSRF для ajax - PullRequest
       11

Токен CSRF для ajax

8 голосов
/ 22 января 2011

У меня проблема с формами, отправленными с помощью ajax.Я делаю свои формы с Zend Framework.Некоторые из них являются реальными формами, поэтому я добавляю элемент Hash.Другие для небольших операций (например, upvote и downvote здесь), поэтому я делаю их со ссылками.

Моя проблема в том, что мне нужно использовать ajax, особенно для небольших форм (ссылок).Я вижу много вопросов, но ничего достаточно всеобъемлющего, чтобы решить проблему.Есть ли подробное описание того, как заставить токен csrf работать без проблем при отправке форм через ajax?желательно с Zend Framework, но также помогут общие ответы PHP.

Ответы [ 2 ]

7 голосов
/ 22 января 2011

Вам не нужен токен CSRF.В вашем случае используется метод HTTP_X_REQUESTED_WITH (см., Например, здесь ).

0 голосов
/ 14 августа 2012

Для тех, кто заходит на эту страницу, есть возможность заставить csrf работать с ajax.

В контроллере вам потребуется сгенерировать хеш, используя добавление этого до конца действия:

$ form-> hash-> initCsrfToken ();

$ this-> view-> csrfhash = $ form-> hash-> getValue ();

В файле js, который вы используете для создания ajax, вам нужно будет использовать селектор, чтобы найти экземпляр хеша при его создании (так для jquery:

$ (# hash) .replaceWith (csrfhash); На самом деле, если вы используете replaceWith, вы собираетесь заменить весь скрытый элемент csrf, включая идентификатор и имя. Но эту часть должно быть довольно легко сделать.

...