web-dev-qa-db-fra.com

Comment Angular Gérer XSS ou CSRF?

Comment Angular (2) gère-t-il XSS et CSRF. Est-ce qu'il gère même ces attaques? Si oui, que dois-je faire pour utiliser cette protection? Sinon, dois-je gérer tout ces attaques sur mon serveur, ou en quelque sorte avec TypeScript dans le frontend?

J'ai lu que vous devez utiliser "withCredentials: true ", mais je ne sais pas trop où mettre ce code ou si c'est même ça, ce que je cherche.

Dans la page Web https://angular.io/ , je n'ai rien trouvé à ce sujet (ou je l'ai juste raté).

22
TheHeroOfTime

Angular2 fournit intégré, activé par défaut *, anti [~ # ~] xss [~ # ~] et Protection CSRF/XSRF .

Le DomSanitizationService se charge de supprimer les bits dangereux afin d'éviter un [~ # ~] xss [~ # ~] attaque.

La classe CookieXSRFStrategy (au sein de la classe XHRConnection) prend en charge la prévention des attaques CSRF/XSRF .

* Notez que la protection CSRF/XSRF est activée par défaut sur le client mais ne fonctionne que si le backend définit un cookie nommé XSRF-TOKEN avec une valeur aléatoire lorsque l'utilisateur s'authentifie. Pour plus d'informations, consultez le modèle de jeton de cookie à en-tête .

MISE À JOUR: Documentation officielle de sécurité Angular2: https://angular.io/docs/ts/latest/guide/security.html (Merci à Martin Probst pour la suggestion de modification!).

38
Daniel Gartmann

Pour le côté serveur mentionné dans Angular, le CSRF que vous pourriez gérer en utilisant Express:

app.use(express.csrf())
app.use(function (req, res, next) {
  res.cookie('XSRF-TOKEN', req.session._csrf);
  res.locals.csrftoken = req.session._csrf;
  next();
})

Je ne sais pas si avec le nouveau HttpClientXsrfModule c'est toujours requis cependant. Il pourrait être suffisant d'ajouter uniquement les éléments suivants (mais doivent être confirmés) du côté client dans app.module:

HttpClientXsrfModule.withOptions({
  cookieName: 'XSRF-TOKEN',
  headerName: 'X-XSRF-TOKEN'
})
0
Daniel Danielecki