Le cross-site scripting (XSS) est un type d'exploit de sécurité qui permet aux attaquants d'injecter des scripts malveillants sur des sites Web à l'aide de code client. Il constitue une menace importante car les attaquants peuvent l'utiliser pour se faire passer pour des utilisateurs, accéder à des données sensibles ou même modifier le contenu des pages du site Web.

Il est si dangereux qu'en 2021, il était numéro deux dans la liste commune d'énumération des faiblesses des 25 principales faiblesses les plus dangereuses. Cela signifie que si vous créez des sites Web, vous devez connaître les scripts intersites et savoir comment les empêcher.

Comment fonctionne le script intersite ?

Avant de comprendre le fonctionnement des scripts intersites, il est important de savoir ce que signifie la politique de même origine (SOP). SOP est une politique de mécanisme de sécurité qui empêche un site Web (une origine) de lire ou d'écrire sur un autre site Web (une origine différente). Il empêche les sites Web malveillants d'envoyer du code malveillant à des sites Web de confiance.

instagram viewer

Les attaques de script intersite tentent de contourner cette politique en exploitant l'incapacité du navigateur à faire la distinction entre le code HTML légitime et le code malveillant. Par exemple, un attaquant peut injecter du code JavaScript dans le site Web cible. Supposons que le navigateur exécute le code et que l'attaquant accède aux jetons de session, aux cookies et à d'autres données sensibles.

Il existe trois types de script intersite que les pirates utilisent pour casser des sites Web: réfléchi, stocké et DOM XSS.

Comment empêcher les scripts intersites dans Node

Voici quelques étapes que vous pouvez suivre pour empêcher les scripts intersites dans Node.

Désinfecter l'entrée

Les attaquants doivent pouvoir envoyer des données à votre application Web et les afficher à un utilisateur afin d'effectuer une attaque XSS. Par conséquent, la première mesure préventive que vous devez prendre consiste à nettoyer toutes les entrées que votre application reçoit de ses utilisateurs. Ceci est crucial car il détecte les fausses données avant que le serveur ne les exécute. Vous pouvez le faire manuellement ou utiliser un outil comme validateur ce qui rend le processus plus rapide.

Par exemple, vous pouvez utiliser le validateur pour échapper aux balises HTML dans la saisie de l'utilisateur comme ci-dessous.

importer validateur de "validateur" ;
laissez userInput = `Jane <chargement du script ="alerte('Pirater XSS');"></script>`;
laisser sanitizedInput = validator.escape (userInput);

Si vous deviez exécuter le code ci-dessus, la sortie épurée serait celle-ci.

Jeanne &ça; chargement du script =&quot; alerte(&#x27;Piratage XSS&#x27;);&quot ;&gt ;&ça ;&#x2F; scénario&gt ;

Restreindre la saisie de l'utilisateur

Restreindre le type d'entrée qu'un utilisateur peut soumettre dans votre formulaire via la validation. Par exemple, si vous avez un champ de saisie pour un e-mail, autorisez uniquement la saisie au format e-mail. De cette façon, vous minimisez les risques que des attaquants soumettent de mauvaises données. Vous pouvez également utiliser le package de validation pour cela.

Implémenter la politique de cookies HTTP uniquement

Les cookies stockent les données dans un cache local et renvoyez-le au serveur via HTTP. Mais les attaquants peuvent également utiliser JavaScript pour y accéder via le navigateur, ils sont donc des cibles faciles.

Le cookie HTTP uniquement est une stratégie qui empêche les scripts côté client d'accéder aux données des cookies. Cela signifie que même si votre application contient une vulnérabilité et qu'un attaquant l'exploite, il ne pourra pas accéder au cookie.

Voici un exemple de la manière dont vous pouvez implémenter la politique de cookies HTTP uniquement dans Node.js à l'aide d'Express :

application.utilisation(Express.session({
secret: "secret",
biscuit: {
httpUniquement: vrai,
sécurisé: vrai
}
}))

Si un attaquant tentait d'accéder au cookie avec le httpUniquement définie sur true comme indiqué ci-dessus, ils recevraient une chaîne vide.

Les scripts intersites sont une cible facile pour les pirates

S'il est crucial d'assurer la sécurité de votre application, sa mise en œuvre peut s'avérer compliquée. Dans cet article, vous avez découvert les attaques de script intersite et comment vous pouvez les empêcher dans Node. Étant donné que les attaquants profitent des vulnérabilités de votre application pour injecter du code malveillant dans votre serveur, assurez-vous toujours de nettoyer les entrées des utilisateurs. En procédant ainsi, vous supprimez le code malveillant avant que votre application ne le stocke ou ne l'exécute.