2015-07-23 23 views
1

Я работаю над решением для предприятий с использованием sailsjs как frameworks nodejs. Безопасность является неотъемлемой частью реализации. Помимо SSL, CORS, мы также используем реализацию CSRF sailsjs. Я все еще оцениваю, насколько безопасно использовать этот токен. Может ли кто-нибудь руководствоваться следующим: Где sailsjs хранит токен CSRF? Зашифровано? Насколько безопасно это использовать?Сохранение токена CSRF sailsjs

ответ

2

Вам нужно будет выполнить некоторую работу, чтобы проверить, что ваши токены недоступны для ненадежных серверов; они должны отвечать только на запросы GET, и они не должны быть доступны через AJAX, а также не должны быть включены заголовки CORS.

PillarJS имеет excellent readme on CSRF. Это говорит о CSRF токены:

CSRF Жетоны

Увы, окончательное решение с помощью CSRF токены. Как работают токены CSRF ?

Сервер отправляет клиенту токен. Клиент отправляет форму с токеном. Сервер отклоняет запрос, если токен недействителен. Злоумышленнику нужно как-то получить токен CSRF с вашего сайта, и для них придется использовать JavaScript для этого. Таким образом, если ваш сайт не поддерживает CORS, тогда злоумышленник не сможет получить токен CSRF , устраняя угрозу.

Убедитесь, что токены CSRF недоступны с помощью AJAX! Не создавайте маршрут /csrf только для того, чтобы захватить токен, и особенно не поддерживайте CORS на , что маршрут!

Токен просто должен быть «неопознанным», что затрудняет успешную атаку злоумышленника в течение нескольких попыток. Он не должен быть криптографически защищен . Атака - это один или два клика от пользователя unbeknownst, а не атаки грубой силы на сервере.

Также рассмотрим это из Sails.js docs, который дает реальный пример того, как они работают:

CSRF токены являются временными и одного сеанса; например Imagine Mary и Muhammad - оба покупателя, которые обращаются к нашему сайту электронной коммерции, работающему на . Паруса и защита CSRF включена. Предположим, что в понедельник Мэри и Мухаммад совершают покупки. Для этого наш сайт нуждался в , чтобы опустить как минимум два разных токена CSRF - один для Мэри и один для Мухаммада. С этого момента, если наш веб-сервер получил запрос с отсутствующим или неправильным токеном, этот запрос будет отклонен. Итак, теперь может быть уверен, что, когда Мэри отправится играть в онлайн-покер, , сторонний сайт не может обмануть браузера, отправив вредоносные запросы на наш сайт, используя ее файлы cookie.

И, наконец, Sails.js использует Connect CSRF protection middleware. Токены хранятся на основе за сеанс и поэтому не хранятся в базе данных и не требуют (двойного) шифрования. Вот еще один отличный ответ на эту тему: Why does Express/Connect generate new CSRF token on each request?

+0

Спасибо за подробный ответ.Но, пожалуйста, объясните, где хранится токен на протяжении всего сеанса? В памяти приложения? В этом случае он должен быть в некоторой структуре данных. – Navdeep

+0

Память да, в переменной, если я правильно помню. Если вы смотрите на то, как извлекать токены, это также содержится в документации. – brandonscript

+0

[Подключить промежуточное ПО для защиты CSRF] (http://www.senchalabs.org/connect/csrf.html) есть мой ответ. Благодарю. – Navdeep

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