CSRF, как его приготовить? - PullRequest
       14

CSRF, как его приготовить?

2 голосов
/ 04 января 2012

Мне было интересно, какой смысл защиты от CSRF? Я имею в виду создание токенов и помещение скрытого поля с токеном в форму, а затем, после завершения процедуры POST, управлять двумя токенами. Я тестировал свою веб-страницу и все, что делал, чтобы обойти ее - я просто скопировал всю сгенерированную форму (исходный код HTML) и изменил атрибут действия формы. Разве веб-боты не делают что-то подобное или я просто чего-то не понимаю? Как сделать эффективную защиту от CSRF?

P.S. Я использую Kohana (Security :: токен и Security :: check)

Спасибо!

Ответы [ 2 ]

2 голосов
/ 04 января 2012

С Википедия :

Атака работает путем включения ссылки или сценария на страницу, которая обращается к сайту, на который пользователь известен (или должен) иметьбыл аутентифицирован.Например, один пользователь, Боб, может просматривать форум чата, где другой пользователь, Фред, опубликовал сообщение.Предположим, что Фред создал элемент изображения HTML, который ссылается на действие на веб-сайте банка Боба (а не на файл изображения), например,

<img src="http://bank.example.com/withdraw?account=bob&amount=1000000&for=Fred">

Если банк Боба хранит свою аутентификационную информацию вфайл cookie, и если срок действия файла cookie не истек, то попытка браузера Боба загрузить изображение отправит форму вывода с его файлом cookie, что позволит авторизовать транзакцию без одобрения Боба.

Создав и включив в свою форму случайный токен, вы можете избежать такого рода атак, проверив, соответствует ли опубликованный токен сгенерированному (обычно хранится в сеансе пользователя).
Кохана документы четко говорят, как это сделать:

Вы можете вставить этот токен в свои формы в виде скрытого поля:

echo Form::hidden('csrf', Security::token());

А затем проверьте это при использовании проверки:

$array->rules('csrf', array(
    'not_empty'       => NULL,
    'Security::check' => NULL,
));
1 голос
/ 25 ноября 2012

Уже есть несколько встроенных помощников для генерации токена безопасности и использования его в форме. Можно сгенерировать токен, вставить его в скрытое поле, а затем использовать Validator для проверки на соответствие классу помощника Security.

См. Документы: http://kohanaframework.org/3.0/guide/api/Security#token

...