Я хочу защитить свое приложение от csrf. Хотя я не мог понять, в чем проблема и как работает мое решение, после некоторых исследований я придумал решение, которое использует Angular. Насколько я, мое решение требует следующих шагов:Как работает токен csrf за запрос
-> запрос клиента для моего спа
-> Я посылаю CSRF токен (не HttpOnly так, что Js сможет прочитать его). Я также сохраняю этот токен csrf для сеанса пользователя на сервере.
-> для каждого почтового запроса я хочу, чтобы мой клиент прочитал токен csrf и установил заголовок X-XSRF-TOKEN для этого токена.
-> Я проверю каждый запрос, проверив заголовок запроса и токен пользователя csrf. Если совпадения, я также проверю jwt для аутентификации, если мне нужно.
-> После проверки токена csrf я вношу изменения в базу данных. Также я снова изменю токен csrf, отправлю новый токен пользователю, измените токен для сеанса.
Но я не уверен, как это поможет. Если у меня есть уязвимость xss, любой введенный код javascript также может сделать то же самое. Я хочу понять проблему и как такое решение помогает. Благодарю.
FYI. Я также реализую аутентификацию на основе JWT, используя redis для управления сеансом, на экспресс-сервере.
У меня есть ваша мысль и предыдущие материалы, которые я читал. Таким образом, моя реализация действительна, так как мне нужен заголовок с токеном, а запросы межсайтового сайта не могут сделать это, как в моем клиенте, верно? – FurkanO
Кросс-сайт, который НЕ вводится на ваш сайт, не сможет получить куки-файл. Таким образом, это, плюс любая аутентификация, сохраняет вашу безопасность. Предполагается, что токен CSRF недолговечен и подходит только для одного запроса. –