2014-09-17 3 views
-1

Я новичок в безопасности Rails, и я ничего не понимаю. Существует уязвимость CSRF, и в Rails существует метод protect_from_forgery для создания токена и защиты моего приложения от плохих запросов с других сайтов. Это хорошо, но эти сайты могут анализировать этот токен с моего сайта и использовать уязвимость CSRF. Я не понимаю, как я могу полностью защитить свое приложение. Заранее спасибо.CSRF в приложениях Rails. Как защитить

P.S. Rails 4

ответ

1

Я предполагаю, что вы на самом деле используете защиту CSRF, предоставленную по умолчанию.

но эти сайты могут анализировать этот токен с моего сайта и использовать уязвимость CSRF .

Нет, они не могут. Именно так работает эта защита. Значок CSRF отличается в каждом сеансе, и злоумышленник, пытающийся подделать запрос, не имеет возможности узнать, какой токен CSRF действителен для вас прямо сейчас. Или, точнее, какой токен будет действителен в то время, когда вы хотите сделать желаемый (по злоумышленнику) запрос, потому что токен генерируется случайным образом и поэтому должен быть непредсказуемым.

Однако этот токен может быть обнюхиван от связи жертвы в результате атаки «Человек-в-в-среднем» (гораздо более сложной), которая, в свою очередь, может быть противопоставлена ​​принудительным SSL.

Rails Guides имеет a section on CSRF countermeasures.

0

На каждый запрос protect_from_forgery добавит

<head> 
    <!- ... -> 
    <meta content="authenticity_token" name="csrf-param" /> 
    <meta content="xoYoj25LyBvoSlKby4cntwJcVbYhQ38P023yGC6Jecc=" name="csrf-token" /> 
</head> 

и к каждой форме

<input name="authenticity_token" type="hidden" value="xoYoj25LyBvoSlKby4cntwJcVbYhQ38P023yGC6Jecc=" /> 

, а также это добавит

cookies[:_csrf_token] = "xoYoj25LyBvoSlKby4cntwJcVbYhQ38P023yGC6Jecc=" 

Тогда на каждом запросе будет проверить, что cookies[:_csrf_token] совпадает с параметром строки запроса (?authenticity_token=XX) ИЛИ заголовком (X-CSRF-Token: XX), вы можете увидеть его here.

Сравнение делается here.

Чтобы узнать подробно, как это работает, прочитайте весь файл, все волшебство происходит там.

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

Смежные вопросы