Skip to content

Comment éviter la faille XSS sur Angular ?

La faille Cross-Site Scripting (XSS) est une vulnérabilité de sécurité qui permet à un attaquant de injecter du code malveillant dans une page web. Ce code peut être exécuté par un utilisateur qui accède à la page, ce qui peut entraîner des problèmes tels que la fuite de données sensibles, l'exécution de code malveillant sur l'ordinateur de l'utilisateur ou la redirection vers un site web malveillant.

Il existe plusieurs types de faille XSS, notamment les failles XSS reflétées et stockées. Dans une faille XSS reflétée, le code malveillant est injecté dans la page web à partir d'une source externe, comme un formulaire ou une URL, et est exécuté immédiatement lorsque l'utilisateur accède à la page. Dans une faille XSS stockée, le code malveillant est injecté dans la page web et stocké sur le serveur, de sorte qu'il est exécuté chaque fois que l'utilisateur accède à la page.

Il est important de protéger les applications contre les failles XSS pour empêcher les attaques de sécurité. Vous pouvez utiliser des outils tels que le service DomSanitizer d'Angular pour traiter du contenu dangereux de manière à le rendre sécurisé à afficher dans une application. Il est également important de former les développeurs à la sécurité et de mettre en œuvre une stratégie de sécurité globale pour protéger votre application contre les menaces.

Comment utiliser DomSanitizer ?

Le service DomSanitizer d'Angular est utilisé pour lutter contre les attaques de type Cross-Site Scripting (XSS). Il permet de traiter du contenu dangereux, comme du code HTML ou JavaScript, de manière à le rendre sûr à afficher dans une application Angular.

Pour traiter du contenu HTML dangereux, utilisez la méthode bypassSecurityTrustHtml du service DomSanitizer :

ts
import { DomSanitizer,SafeHtml } from '@angular/platform-browser';
import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'my-component',
  standalone: true,
  template: '<div [innerHtml]="safeHtml"></div>'
})
export class MyComponent implements OnInit {
  private sanitizer = inject(DomSanitizer);
  safeHtml!: SafeHtml;

  ngOnInit() {
    this.safeHtml = this.sanitizer.bypassSecurityTrustHtml('<script>alert("Danger!")</script>');
  }
}

Le service DomSanitizer fournit également d'autres méthodes pour traiter d'autres types de contenu dangereux, comme du code JavaScript ou du contenu dans un format de données spécifique. Consultez la documentation d'Angular pour en savoir plus sur l'utilisation de ces méthodes.

Comment l'utiliser pour du contenu Javascript ?

Pour utiliser le service DomSanitizer pour traiter du contenu JavaScript dangereux dans une application Angular, vous pouvez suivre les étapes suivantes :

  1. Pour traiter du contenu JavaScript dangereux, utilisez la méthode bypassSecurityTrustScript du service DomSanitizer :
ts
import { DomSanitizer,SafeScript } from '@angular/platform-browser';
import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'my-component',
  standalone: true,
  template: ''
})
export class MyComponent implements OnInit {
  private sanitizer = inject(DomSanitizer);

  ngOnInit() {
    this.safeScript = this.sanitizer.bypassSecurityTrustScript('alert("Danger!")');
    eval(this.safeScript); // Exécute le contenu JavaScript traité
  }
}

WARNING

Il est important de noter que l'utilisation de la fonction eval peut présenter des risques de sécurité, il est donc recommandé de n'utiliser cette approche que si vous êtes sûr que le contenu est sécurisé.