Maison >interface Web >js tutoriel >Une brève discussion sur les principes et la défense des attaques DDoS à l'aide des compétences JavaScript_javascript
L'attaque par déni de service distribué (DDoS) est l'une des attaques les plus anciennes et les plus courantes contre les sites Web. Nick Sullivan est ingénieur système chez CloudFlare, un fournisseur de services d'accélération et de sécurité de sites Web. Récemment, il a écrit un article présentant comment les attaquants utilisent des sites Web malveillants, le détournement de serveur et les attaques de l'homme du milieu pour lancer des attaques DDoS, et a expliqué comment utiliser HTTPS et la technologie à venir appelée « Intégrité des sous-ressources ( La nouvelle technologie Web Subresource Integrity)" SRI) protège les sites Web contre les attaques.
La plupart des interactions sur les sites Web modernes proviennent de JavaScript. Les sites Web implémentent des fonctionnalités interactives en ajoutant du code JavaScript directement au HTML ou en chargeant du JavaScript à partir d'un emplacement distant via l'élément HTML 9be8c280d3dc51bb61988971f6c2aa5c. JavaScript peut émettre des requêtes HTTP(S) pour charger le contenu d'une page Web de manière asynchrone, mais il peut également transformer le navigateur en une arme pour les attaquants. Par exemple, le code suivant peut inonder un site Web compromis de requêtes :
function imgflood() { var TARGET = 'victim-website.com' var URI = '/index.php?' var pic = new Image() var rand = Math.floor(Math.random() * 1000) pic.src = 'http://'+TARGET+URI+rand+'=val' } setInterval(imgflood, 10)
Le script ci-dessus créera 10 balises d'image sur la page chaque seconde. La balise pointe vers "victim-website.com" avec un paramètre de requête aléatoire. Si l'utilisateur visite un site Web malveillant contenant ce code, il participera alors sans le savoir à une attaque DDoS sur « victime-website.com », comme le montre la figure ci-dessous :
De nombreux sites Web utilisent un ensemble commun de bibliothèques JavaScript. Pour économiser de la bande passante et améliorer les performances, ils utilisent des bibliothèques JavaScript hébergées par des tiers. jQuery est la bibliothèque JavaScript la plus populaire sur le Web, utilisée par environ 30 % des sites Web en 2014 . D'autres bibliothèques populaires incluent le SDK Facebook et Google Analytics. Si un site Web contient une balise de script qui pointe vers un fichier JavaScript hébergé par un tiers, tous les visiteurs du site Web téléchargeront le fichier et l'exécuteront. Si un attaquant compromet un tel serveur hébergeant un fichier JavaScript et ajoute du code DDoS au fichier, alors tous les visiteurs feront partie de l'attaque DDoS. Il s'agit d'un piratage de serveur, comme le montre la figure ci-dessous :
.
Cette attaque fonctionne car il manque un mécanisme dans HTTP qui permettrait aux sites Web de désactiver l'exécution de scripts falsifiés. Pour résoudre ce problème, le W3C a proposé d'ajouter une nouvelle fonctionnalité, la cohérence des sous-ressources. Cette fonctionnalité permet à un site Web d'indiquer au navigateur d'exécuter un script uniquement si le script qu'il télécharge correspond au script que le site Web souhaite exécuter. Ceci est réalisé grâce au hachage du mot de passe, le code est le suivant :
<script src="https://code.jquery.com/jquery-1.10.2.min.js" integrity="sha256-C6CB9UYIS9UJeqinPHWTHVqh/E1uhG5Twh+Y5qFQmYg=" crossorigin="anonymous">
Un hachage de mot de passe identifie de manière unique un bloc de données, et deux fichiers n'auront pas le même hachage de mot de passe. L'attribut d'intégrité fournit le hachage du mot de passe du fichier de script que le site Web souhaite exécuter. Une fois le navigateur téléchargé le script, il calcule son hachage puis compare la valeur résultante avec la valeur fournie par l'intégrité. S'il ne correspond pas, le script cible a été falsifié et le navigateur ne l'utilisera pas. Cependant, de nombreux navigateurs ne prennent actuellement pas en charge cette fonctionnalité, et Chrome et Firefox ajoutent la prise en charge de cette fonctionnalité.
L'L'attaque de l'homme du milieu est le dernier moyen utilisé par les attaquants pour insérer du code JavaScript malveillant dans des sites Web. Lorsque vous accédez à un site Web via un navigateur, celui-ci passe par de nombreux nœuds. Si un nœud intermédiaire ajoute du code malveillant à la page Web, cela formera une attaque de l'homme du milieu, comme le montre la figure ci-dessous :
La technologie de cryptage peut bloquer complètement cette injection de code. Avec HTTPS, toutes les communications entre le navigateur et le serveur Web sont cryptées et authentifiées, empêchant des tiers de modifier la page Web pendant la transmission. Par conséquent, configurer le site Web sur HTTPS uniquement, conserver le certificat et vérifier le certificat peut empêcher efficacement les attaques de l'homme du milieu.
En répondant aux commentaires des internautes, Nick a souligné que SRI et HTTPS se complètent et que l'utilisation des deux en même temps peut offrir une meilleure protection au site Web. En plus des méthodes ci-dessus, l’utilisation de certains produits de sécurité anti-DDoS pour renforcer la protection est également une option.