window.pipedriveLeadboosterConfig = { base : 'leadbooster-chat.pipedrive.com', companyId : 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version : 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster existe déjà') } else { w.LeadBooster = { q : [], on : function (n, h) { this.q.push({ t : 'o', n : n, h : h }) }, trigger : function (n) { this.q.push({ t : 't', n : n }) }, } } })() Sécurité des applications web - vulnérabilité XSS - The Codest
The Codest
  • A propos de nous
  • Services
    • Développement de logiciels
      • Développement frontal
      • Développement backend
    • Staff Augmentation
      • Développeurs frontaux
      • Développeurs backend
      • Ingénieurs des données
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs AQ
      • Autres
    • Conseil consultatif
      • Audit et conseil
  • Industries
    • Fintech et banque
    • E-commerce
    • Adtech
    • Santé (Healthtech)
    • Fabrication
    • Logistique
    • Automobile
    • IOT
  • Valeur pour
    • CEO
    • CTO
    • Gestionnaire des livraisons
  • Notre équipe
  • Études de cas
  • Savoir comment
    • Blog
    • Rencontres
    • Webinaires
    • Ressources
Carrières Prendre contact
  • A propos de nous
  • Services
    • Développement de logiciels
      • Développement frontal
      • Développement backend
    • Staff Augmentation
      • Développeurs frontaux
      • Développeurs backend
      • Ingénieurs des données
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs AQ
      • Autres
    • Conseil consultatif
      • Audit et conseil
  • Valeur pour
    • CEO
    • CTO
    • Gestionnaire des livraisons
  • Notre équipe
  • Études de cas
  • Savoir comment
    • Blog
    • Rencontres
    • Webinaires
    • Ressources
Carrières Prendre contact
Flèche arrière RETOUR
2021-04-16
Développement de logiciels

Sécurité des applications web - vulnérabilité XSS

Lukasz Kolko

Les attaques XSS permettent aux attaquants d'injecter des scripts côté client dans les pages web visualisées par d'autres utilisateurs. Les principaux effets de cette vulnérabilité sont la possibilité d'exécuter des actions dans le contexte de l'utilisateur connecté, et de lire des données dans le contexte de l'utilisateur connecté.

Scénario d'attaque

  1. L'attaquant localise la vulnérabilité XSS sur un site web utilisé par la victime, par exemple le site web d'une banque.
  2. La victime est actuellement connectée à cette page
  3. L'auteur de l'attaque envoie à la victime une adresse URL falsifiée.
  4. La victime clique sur l'URL
  5. Sur le site de la victime banque site web, JavaScript code commence à s'exécuter pour intercepter les données de l'utilisateur ou exécuter un transfert en son nom vers le compte de l'attaquant

Il convient de noter que les opérations effectuées au nom de la victime peuvent être invisibles pour cette dernière, car elles peuvent se dérouler en arrière-plan à l'aide de l'API de la banque, ou l'attaquant peut les effectuer ultérieurement avec les données nécessaires à l'authentification, les jetons, les cookies, etc.

Types de XSS

1. XSS réfléchi

Il s'agit d'un code HTML/JavaScript contenu dans n'importe quel paramètre (par exemple GET, POST ou cookie) qui est affiché en réponse.

Une page avec une entrée de texte pour rechercher quelque chose qui met le paramètre ?search=foo dans la fin de l'URL lors de l'interrogation de l'API. Après avoir saisi une phrase, si elle n'est pas trouvée, un message de retour est placé dans l'ex HTML.

<div>Aucun résultat trouvé pour <b>foo</b></div>

Nous pouvons essayer de mettre l'URL ?search=..

2.DOM XSS

C'est le cas lorsque son exécution est rendue possible par l'utilisation de fonctions dangereuses dans JavaScript, telles que `eval` ou `innerHtml`. L'"exemple vivant" ci-dessous montre une attaque DOM XSS basée sur l'élément `innerHtml` fonction.

3. XSS stocké

Il s'agit d'un cas où le code malveillant est écrit du côté du serveur. Par exemple, nous pouvons envoyer un commentaire contenant un code malveillant à un article de blog qui est téléchargé sur le serveur. Sa tâche consiste, par exemple, à attendre la modération de l'administrateur, puis à voler ses données de session, etc.

Méthodes d'injection

1. Dans le contenu de la balise

`onerror=alert('XSS')`en

<img src onerror="alert('XSS')" />

2. Dans le contenu de l'attribut

`" onmouseover=alert('XSS')` en

<div class="" onmouseover="alert('XSS')""></div>

  1. Dans le contenu de l'attribut sans les guillemets

x onclick=alert('XSS')en

<div class="x" onclick="alert('XSS')"></div>

  1. Dans le cadre de la hrefattribut ef

javascript:alert('XSS') en

<a href="javascript:alert('XSS')"></a>

  1. Dans la chaîne de caractères du code JavaScript

";alert('XSS')// en

  1. Dans l'attribut avec l'événement JavaScript

&#39 ;);alert('XSS')// où &#39 ; est un guillemet simple, en

<div onclick="change('&#39;);alert('XSS')//')">Jean</div>

  1. Dans le cadre de la href dans le protocole JavaScript

);alert(1)// où %27 est un guillemet simple, en

<a href="javascript:change('');alert(1)//')">cliquer</a>


Exemple concret

Méthodes de défense

  1. Encodage des données à l'aide de fonctions intégrées présentes dans de nombreux les langages de programmation.
  2. Utiliser des systèmes de modèles avec encodage automatique. La plupart des frameworks populaires qui utilisent de tels systèmes nous protègent des injections XSS (Django, Templates, VueReact, etc.)
  3. N'utilisez pas de fonctions telles que eval ou Fonction avec des données d'utilisateurs non fiables.
  4. N'utilisez pas de fonctions et de propriétés qui attribuent un code HTML directement aux éléments de l'arbre DOM, par exemple, innerHTML, outerHTML, insertAdjacentHTML, ocument.write. Au lieu de cela, vous pouvez utiliser des fonctions qui attribuent directement du texte à ces éléments, telles que texteContenu ou innerText.
  5. Soyez prudent lorsque vous redirigez l'utilisateur vers une URL qu'il contrôle. Risque d'injection location = 'javascript('XSS')'.
  6. Filtrer le HTML à l'aide de bibliothèques telles que DOMPurify.
  7. Attention au téléchargement .html ou .svg fichiers. Vous pouvez créer un domaine distinct à partir duquel les fichiers téléchargés seront servis.
  8. Utiliser le Politique de sécurité du contenu mécanisme.
  9. Jetez un coup d'œil aux filtres anti-XSS intégrés dans la plupart des navigateurs populaires.

    Si cet article vous intéresse, suivez Lukasz sur Github : https://github.com/twistezo

En savoir plus :

Stratégies de récupération des données dans NextJS

API Rails et CORS. Un soupçon de conscience

Pourquoi devriez-vous (probablement) utiliser Typescript ?

Articles connexes

Développement de logiciels

Construire des applications web à l'épreuve du temps : les conseils de l'équipe d'experts de The Codest

Découvrez comment The Codest excelle dans la création d'applications web évolutives et interactives à l'aide de technologies de pointe, offrant une expérience utilisateur transparente sur toutes les plateformes. Découvrez comment notre expertise favorise la transformation numérique et la...

LE CODEST
Développement de logiciels

Les 10 premières entreprises de développement de logiciels basées en Lettonie

Découvrez les principales sociétés de développement de logiciels en Lettonie et leurs solutions innovantes dans notre dernier article. Découvrez comment ces leaders de la technologie peuvent vous aider à développer votre entreprise.

thecodest
Solutions pour les entreprises et les grandes entreprises

L'essentiel du développement de logiciels Java : Un guide pour une externalisation réussie

Explorez ce guide essentiel sur le développement réussi de logiciels Java outsourcing pour améliorer l'efficacité, accéder à l'expertise et assurer la réussite des projets avec The Codest.

thecodest
Développement de logiciels

Le guide ultime de l'externalisation en Pologne

L'essor de outsourcing en Pologne est dû aux progrès économiques, éducatifs et technologiques, qui favorisent la croissance des technologies de l'information et un climat propice aux entreprises.

TheCodest
Solutions pour les entreprises et les grandes entreprises

Le guide complet des outils et techniques d'audit informatique

Les audits informatiques garantissent la sécurité, l'efficacité et la conformité des systèmes. Pour en savoir plus sur leur importance, lisez l'article complet.

The Codest
Jakub Jakubowicz CTO & Co-Fondateur

Abonnez-vous à notre base de connaissances et restez au courant de l'expertise du secteur des technologies de l'information.

    A propos de nous

    The Codest - Entreprise internationale de développement de logiciels avec des centres technologiques en Pologne.

    Royaume-Uni - Siège

    • Bureau 303B, 182-184 High Street North E6 2JA
      Londres, Angleterre

    Pologne - Les pôles technologiques locaux

    • Parc de bureaux Fabryczna, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsovie, Pologne

      The Codest

    • Accueil
    • A propos de nous
    • Services
    • Études de cas
    • Savoir comment
    • Carrières
    • Dictionnaire

      Services

    • Conseil consultatif
    • Développement de logiciels
    • Développement backend
    • Développement frontal
    • Staff Augmentation
    • Développeurs backend
    • Ingénieurs en informatique dématérialisée
    • Ingénieurs des données
    • Autres
    • Ingénieurs AQ

      Ressources

    • Faits et mythes concernant la coopération avec un partenaire externe de développement de logiciels
    • Des États-Unis à l'Europe : Pourquoi les startups américaines décident-elles de se délocaliser en Europe ?
    • Comparaison des pôles de développement Tech Offshore : Tech Offshore Europe (Pologne), ASEAN (Philippines), Eurasie (Turquie)
    • Quels sont les principaux défis des CTO et des DSI ?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Conditions d'utilisation du site web

    Copyright © 2025 par The Codest. Tous droits réservés.

    fr_FRFrench
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek fr_FRFrench