2016-06-14 5 views
0

Я хочу защитить свое приложение от csrf. Хотя я не мог понять, в чем проблема и как работает мое решение, после некоторых исследований я придумал решение, которое использует Angular. Насколько я, мое решение требует следующих шагов:Как работает токен csrf за запрос

-> запрос клиента для моего спа

-> Я посылаю CSRF токен (не HttpOnly так, что Js сможет прочитать его). Я также сохраняю этот токен csrf для сеанса пользователя на сервере.

-> для каждого почтового запроса я хочу, чтобы мой клиент прочитал токен csrf и установил заголовок X-XSRF-TOKEN для этого токена.

-> Я проверю каждый запрос, проверив заголовок запроса и токен пользователя csrf. Если совпадения, я также проверю jwt для аутентификации, если мне нужно.

-> После проверки токена csrf я вношу изменения в базу данных. Также я снова изменю токен csrf, отправлю новый токен пользователю, измените токен для сеанса.

Но я не уверен, как это поможет. Если у меня есть уязвимость xss, любой введенный код javascript также может сделать то же самое. Я хочу понять проблему и как такое решение помогает. Благодарю.

FYI. Я также реализую аутентификацию на основе JWT, используя redis для управления сеансом, на экспресс-сервере.

ответ

2

Следующая ссылка может помочь, но я опишу здесь.

https://nirajrules.wordpress.com/2010/01/16/cross-site-scripting-xss-vs-cross-site-request-forgery/

CSRF больше о перекрестных запросов сайта. Например, кто-то просто находит ваши формы и отправляет их непосредственно. Это то, что помогает предотвратить токен CSRF. Представьте, что люди создают поддельный веб-сайт, фишинг-сайт, который на самом деле обращается к вашей форме, отправляя конечные точки.

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

Удачи.

+0

У меня есть ваша мысль и предыдущие материалы, которые я читал. Таким образом, моя реализация действительна, так как мне нужен заголовок с токеном, а запросы межсайтового сайта не могут сделать это, как в моем клиенте, верно? – FurkanO

+0

Кросс-сайт, который НЕ вводится на ваш сайт, не сможет получить куки-файл. Таким образом, это, плюс любая аутентификация, сохраняет вашу безопасность. Предполагается, что токен CSRF недолговечен и подходит только для одного запроса. –

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