Vulnérabilités HTTP : comment les identifier et protéger votre site web
Les sites Web font partie de notre quotidien. Grâce à eux, nous pouvons accéder aux informations dont nous avons besoin et il est possible de réaliser toutes sortes d’activités. Cependant, il existe plusieurs activités sur le Web qui nécessitent le traitement de données personnelles ou de tout type de données de nature sensible. La sécurité de tout site Web, y compris les applications Web, est plus que jamais un aspect important non seulement pour le développeur, mais aussi pour les utilisateurs finaux. Ce guide vous expliquera tout sur les vulnérabilités HTTP, qui peuvent être presque aussi graves que XSS (Cross-Site Scripting) , pour ne citer qu’un exemple.
N’oubliez pas que la base du Web est le langage de balisage hypertexte, c’est-à-dire HTML . Depuis sa création, il a été présenté comme une excellente alternative pour développer des pages web. Au fil des années, son évolution a fait des pas de géant. Des milliers de bibliothèques sont à la disposition des développeurs pour ajuster les sites Web en fonction de l’objectif initial du projet. Malheureusement, ils ne sont pas exempts de menaces et de risques de sécurité, en particulier pour les utilisateurs finaux.
Qu’est-ce que le protocole HTTP ?
De même, nous devons nous rappeler et considérer bien l’accent mis sur la définition du protocole HTTP. Alors aussi, à quoi ça sert. C’est un protocole de communication. Sa fonction essentielle est la transmission de données via le WWW (World Wide Web) . C’est l’une des composantes essentielles de l’architecture du web. En 1999, la première version de la documentation du protocole a été publiée, avec la RFC 2616, ce protocole a été publié avec la version 1.1. Au fil des années, différentes versions ont vu le jour, et la dernière version disponible est HTTP/3, qui succédera à l’actuel HTTP/2, largement utilisé dans la grande majorité des sites Internet.
Le schéma de fonctionnement essentiel est le suivant : un client (internaute) essaie d’établir une connexion via une requête. Cette requête envoie un message avec un format spécifique au serveur Web. Ce serveur Web est celui qui héberge le site Web ou le service à partir duquel nous avons besoin d’informations. Si la connexion réussit, le serveur Web répond à cette demande par une réponse positive. C’est quelque chose qui se produit plusieurs fois par jour chaque fois que vous visitez vos sites Web préférés.
Vulnérabilités HTTP (+ HTML)
L’ensemble composé de HTML et HTTP comporte plusieurs applications à des fins malveillantes, ou qui ne se comportent tout simplement pas comme on pourrait s’y attendre. Par conséquent, ils deviennent des vulnérabilités importantes qui menacent l’intégrité du site Web ou de l’application Web. Surtout, en ce qui concerne la sécurité dudit site ou de ladite application.
Champs de formulaire masqués
L’une des caractéristiques bien connues du HTML est qu’il existe un attribut de formulaire qui permet aux champs ou aux objets d’être marqués comme masqués ( hidden ). Comment cela se reflète-t-il sur une page ? Lors de l’ouverture d’une page Web, l’utilisateur ne pourra que remplir les champs visibles, le reste est masqué. Bien sûr, la plupart des utilisateurs ne percevront pas qu’il existe des champs de formulaire précisément masqués. Le danger de ceci est que le développeur de la page pourrait utiliser cet attribut pour implémenter des champs cachés sous la forme qui lui permettrait de stocker des données sensibles sur le serveur web. Dans de nombreux cas, il est inutile de le faire.
Par conséquent, l’éthique professionnelle de chaque développeur déterminera si l’utilisation de cet attribut particulier est appropriée.
<html>
<input type="hidden" id="precio" name="precio" value="200">
<html>
Ci-dessus, vous pouvez voir un exemple d’application de champs de formulaire masqués. Il s’agit d’un champ prétendument caché qui stocke des informations sur les prix. Généralement, dans une boutique en ligne, les différents prix sont gérés côté serveur. Dans ce cas, ces données sont traitées du côté de l’utilisateur. C’est comme si ce champ caché agissait comme un serveur Web supposé qui stocke des données de toute nature. Bien qu’à première vue, cela soit assez pratique a son risque, principalement parce qu’il sera possible pour l’utilisateur lui-même de manipuler les différents prix simplement à partir du navigateur.
N’oubliez pas qu’il est possible de visualiser le code source d’une page Web à partir du navigateur. Google Chrome est le navigateur que la plupart des gens utilisent et le raccourci pour accéder à la console développeur est » CTRL + Shift + I «. Avec cela, vous pouvez, entre autres, enregistrer une copie de la page Web sur votre ordinateur ou utiliser un proxy Web pour manipuler les données d’une page Web, en particulier les champs de formulaire.
Pour en revenir à l’exemple, grâce aux champs cachés, vous pouvez manipuler le prix du côté de l’utilisateur et appliquer le prix que vous souhaitez avant de finaliser l’achat. Par conséquent, il est conseillé de ne pas appliquer ces types d’attributs aux champs de formulaire, surtout s’il s’agit de sites Web qui manipulent des valeurs.
URL magiques
L’ URL est l’un des concepts essentiels du HTML . Son acronyme en anglais signifie Uniform Resource Locator . C’est ce que les gens appellent généralement un lien ou un lien vers n’importe quelle page Web. Dans le développement Web, il existe un concept curieux de liens magiques ou d’URL magiques. La norme HTTP permet à un développeur Web de fournir des données supplémentaires pertinentes dans une URL sous la forme de verbes ou de paires de clés. Ces données supplémentaires, qu’il s’agisse de verbes ou de paires de clés, sont des composants essentiels d’une URL magique . Ce qui est fait, c’est gérer des données sensibles et/ou importantes entre le client et le serveur web.
http://www.misitioweb.com?OpDEfgtRDBc&action=view
Ci-dessus, nous voyons un exemple d’URL magique. Apparemment, il n’y a rien d’anormal. Mais, ce qui vient après «.com / OpDEfgtR …» est le verbe ou la paire de clés qui contient ces données si pertinentes pour la communication entre le client et le serveur Web. Maintenant, quelles données pourraient être stockées dans des URL magiques ? Il peut s’agir de mots de passe, de codes PIN, de numéros de compte bancaire, de cartes de crédit, de cookies pour les différentes sessions sur un site Web et bien plus encore.
Il s’agit d’un autre cas d’application supposée pratique de traitement de données, mais qui peut néanmoins être beaucoup plus dangereux. Un cybercriminel peut intercepter la communication entre le client et le serveur Web afin de décoder les informations disponibles dans ce verbe ou cette paire de clés dans l’URL. Avec les ressources disponibles aujourd’hui, ce ne sera pas une tâche très difficile.
Cookies prévisibles
S’il est un peu difficile d’éviter d’associer le mot cookie aux délicieux cookies que nous connaissons tous, les cookies sur le web jouent un rôle essentiel dans la navigation jour après jour. Ils sont conçus de manière à pouvoir stocker des données persistantes côté client, c’est-à-dire sur le propre appareil du client. Depuis notre navigateur, nous pouvons gérer nos cookies à tout moment, et c’est surtout cela qui nous aide à authentifier notre identité dans les différents services web.
from http import cookies
cookieVal= 0
def getCookie():
c = cookies.SimpleCookie()
c['usercookie'] = cookieVal
cookieVal += 1
return c
Le problème commence lorsque les cookies sont développés avec une logique de génération prévisible. Il est très difficile pour quelque chose comme cela de s’appliquer aujourd’hui, mais nous ne devons pas exclure le fait que de nombreuses pages Web pourraient avoir cette faille de sécurité. Supposons qu’une page Web (voir l’exemple ci-dessus) génère des cookies de session et que chacun d’eux est généré, l’augmentation se produit un par un. C’est-à-dire un cookie avec la valeur «1», un cookie avec la valeur «2», un cookie avec la valeur «3» et ainsi de suite.
En regardant de plus près l’exemple de code, c’est la ligne qui fait augmenter la valeur du cookie, qui est stocké dans la variable cookieVal , d’un :
cookieVal += 1
Les cookies prévisibles permettent à un cybercriminel d’accéder aux sessions Web de plusieurs utilisateurs sans avoir besoin de connaître les informations d’identification d’accès. Si une page web a généré 1000 cookies avec la logique que nous venons de démontrer, si un cybercriminel parvient à avoir le contrôle du site web, il pourra s’approprier 1000 sessions d’utilisateurs de cette page. Par conséquent, il est essentiel qu’en tant que développeur Web, vous appliquiez les meilleures pratiques lorsque vous travaillez avec des cookies. Les ressources gratuites telles que celles que l’on peut trouver sur le Mozilla Developer Network sont utiles, pratiques et accessibles à toute personne ayant besoin de garantir la sécurité des cookies. Vous pouvez accéder à cette ressource Web en espagnol sur les cookies HTTP .
Il ne fait aucun doute que sans HTML et HTTP, le Web tel que nous le connaissons n’existerait pas. Cependant, il n’est pas épargné par les vulnérabilités. Cela signifie que plus que jamais, il est important de connaître les vulnérabilités susmentionnées et de les gérer pour en avoir un contrôle efficace. De ce fait, les pages web que vous développerez seront plus robustes en termes de sécurité et au final, cela se traduira par une tranquillité et une confiance pour l’utilisateur qui est de plus en plus exposé aux cyberattaques.