83 votes

Réagir frontend et API REST, CSRF

Réagir interface avec l'API REST comme backend, l'autorisation par JWT, mais comment gérer la session? Par exemple, après la connexion, je reçois JWT jeton de REPOS, si je l'enregistrer pour le localStorage je suis vulnérable aux attaques de type XSS, si je l'enregistre les Cookies, les mêmes problèmes que si ne suis pas de réglage HttpOnly, mais réagir ne peut pas lire les Cookies HttpOnly (j'ai besoin de lire cookie pour prendre JWT, et utiliser cette JWT avec le reste des demandes), aussi je n'ai pas mentionné CSRF problème, si vous utilisez le REPOS comme backend, vous ne pouvez pas utiliser Jeton CSRF.

Suite à Réagir avec le RESTE semble être une mauvaise solution et j'ai besoin de repenser mon architecture, comment faire? Est-il possible d'offrir aux utilisateurs de sécuriser réagir application ce logique des affaires traitées sur les API REST côté, sans crainte de perdre leurs données?

Mise à jour:

Aussi loin que j'ai compris, il y a possibilité de le faire:

  1. Réagir fait appel AJAX à l'API REST
  2. Réagir obtient JWT jeton de REPOS
  3. Réagir écrit cookies httponly
  4. En raison de réagir ne peut pas lire les cookies httponly, nous l'utilisons dans tous nos appels de REPOS où nous avons besoin de l'authentification
  5. Appels de REPOS vérifier XMLHttpRequest en-tête, ce qui est une sorte de protection CSRF
  6. RESTE vérification côté pour cookie, lire JWT et faire des trucs

J'ai un manque de connaissances théoriques ici, mais il semble logique et assez sécurisé, mais j'ai encore besoin de réponse à mes questions et d'approuver de ce "flux de travail".

35voto

Josh Lin Points 1496
  1. Réagir fait appel AJAX à l'API REST

assuré, beaucoup de réparateur de ressources client lib disponible

  1. Réagir obtient JWT jeton de REPOS

assuré, c'est ce que JWT devrait le faire

  1. Réagir écrit cookies httponly

Je ne pense pas, Il ne doit pas travailler, mais la session n'est pas une chose importante, il va bientôt sortir de la date, et vérifier de nouveau le mot de passe sur les principales opérations, même les pirates ont obtenu dans un très court laps de temps, vous pouvez lier jeton de session avec IP lors de la connexion de l'utilisateur et de le vérifier dans votre backend api. Si vous voulez plus sécurisé, il suffit de garder jeton dans la mémoire, et de refaire la connexion lors de l'ouverture de la nouvelle page ou une page se rafraîchit

  1. En raison de réagir ne peut pas lire les cookies httponly, nous l'utilisons dans notre appel RESTE où nous avons besoin de l'authentification

assuré, vérification de l'utilisateur et les autorisations par le biais de jeton de connexion, comme csrf, vous pouvez placer votre jeton de connexion dans votre en-tête de demande, et de vérifier dans votre backend api. Lier jeton de connexion à votre propre reposant lib vous permettra d'économiser beaucoup de codes

  1. RESTE sur les appels vérifications XMLHttpRequest en-tête, ce qui est une sorte de protection CSRF RESTE vérification côté pour cookie, lire JWT et faire des trucs

assuré, comme la plupart des personnes. Aussi, lier jeton csrf à votre propre reposant lib vous permettra d'économiser beaucoup de codes

utilisation jeton de l'utilisateur dans l'en-tête https://www.npmjs.com/package/express-jwt-token Authorization JWT < jwt token >

utilisation jeton csrf dans l'en-tête https://github.com/expressjs/csurf req.headers['csrf-token'] - the CSRF-Token HTTP request header.

reposant client https://github.com/cujojs/rest

réagir avec jwt https://github.com/joshgeller/react-redux-jwt-auth-example

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X