Quelques types d’attaques

En tant que développeur Web, vous devez être au courant des attaques qui pourraient être menées contre les sites que vous développez. Ceci vous permettra de mieux protéger votre code et vos données.

Cet article vous présente trois types d'attaques : les injections SQL, les attaques XSS et les attaques CSRF. Soyez avisé qu'il existe de nombreux autres types d'attaques. Ceci ne constitue qu'un minimum à connaître. De plus, les descriptions et exemples présentés ici ne constituent qu'une partie des techniques mises en place par les utilisateurs malveillants.

▼Publicité

À vous de vous tenir informés des meilleures stratégies de protection pour vos applications.

Injection SQL

Qu'est-ce que c'est ?

L'injection SQL est une technique qui consiste à exécuter des requêtes SQL qui n'étaient pas prévues par le programme original.

Qu'est-ce qui rend cette attaque possible ?

Ceci est possible lorsqu'une requête utilise des valeurs entrées par l'usager (ex : SELECT produit_description WHERE produit_id=$id, où $id serait une information entrée dans un formulaire Web, dans l'URL, dans un cookie, etc.).

Comment les utilisateurs malveillants font-ils ?

Les utilisateurs malveillants vont utiliser des caractères particuliers (ex : apostrophe ('), commentaires (--)) pour altérer la requête ou encore la clause SQL UNION pour insérer une seconde requête dans la requête originale.

Prenons le cas où l'usager entre l'URL suivant dans son navigateur :

    http://mondomaine.com/lapageweb.php?id=3+UNION+SELECT+CONCAT_WS(CHAR(32,58,32),user(),database(),version())

Selon la façon dont la page a été programmée, il pourrait obtenir le nom de l'usager MySQL, le nom de la BD et la version MySQL, ce qui est amplement suffisant pour poursuivre ses manoeuvres malveillantes.

Comment s'en protéger ?

La principale protection contre les injections SQL consiste à utiliser les requêtes préparées lorsqu'une requête utilise des informations entrées par l'usager.

Attaque XSS (Cross site scripting)

Qu'est-ce que c'est ?

L'attaque XSS consiste à exécuter du code côté client, code qui n'était pas prévu par le programme original. Ce code est généralement du JavaScript.

Qu'est-ce qui rend cette attaque possible ?

Ceci est possible quand le programme affiche à l'écran des valeurs entrées par l'usager (ex : echo $_GET['id']). Autre cas de figure : les informations entrées par l'usager sont enregistrées dans la BD et l'attaque survient plus tard quand les informations sont lues dans la BD et affichées à l'écran.

Comment les utilisateurs malveillants font-ils ?

Ils tentent d'entrer une balise <script> ou encore un attribut HTML lançant du JavaScript (ex : ajout d'un attribut onmouseover) soit dans un formulaire Web, soit dans un URL, soit dans un cookie.

Par exemple, l'usager malveillant pourrait entrer l'information suivante dans un commentaire : <script>alert('Cassé!');</script>. L'attaque surviendrait quand ce commentaire, après avoir été enregistré dans la BD, serait affiché à l'écran.

L'affichage d'une alerte n'est pas une attaque bien dangereuse mais elle indique à l'utilisateur malveillant que le code n'est pas sécurisé, ce qui ouvre la porte à des attaques beaucoup plus sérieuses, comme par exemple le vol des informations d'authentifications contenues dans un cookie.

Comment s'en protéger ?

La principale protection contre les attaques XSS consiste à bloquer les balises <script>, soit en utilisant un filtre (ex : filter_input()) ou encore à l'aide de htmlspecialchars().

Attaque CSRF (Cross site request forgery, attaque par falsification de requête inter-sites, sea-surfing)

Qu'est-ce que c'est ?

Ce type d'attaque consiste effectuer une opération protégée en passant par un usager qui détient les droits requis pour effectuer cette opération. Ceci est fait à l'insu de cet usager.

Qu'est-ce qui rend cette attaque possible ?

Un des facteurs rendant possibles les attaques CSRF est le lancement d'une action à partir de paramètres dans l'URL (utilisation de $_GET). On dira qu'on travaille avec des requêtes de type GET.

Comment les utilisateurs malveillants font-ils ?

Les attaques CSRF sont souvent lancées à partir d'un lien envoyé à l'usager par courriel ou sur des réseaux sociaux. L'usager clique sur le lien en croyant qu'il mènera à un endroit légitime alors que le lien lance une action protégée.

Par exemple, un utilisateur malveillant enverra à un usager détenant les droits de suppression un courriel l'invitant à cliquer sur un lien dont le libellé semble inoffensif (ex : « Pour plus d'information »). Ce lien mène en réalité vers la page de suppression du produit no 4 (ex : http://mondomaine.com/produits.php?action=delete&id=4). Puisque l'usager détient les droits de suppression, le produit no 4 sera effectivement supprimé. L'utilisateur malveillant aura donc réussi à effectuer une opération protégée (ici, supprimer le produit no 4) même s'il ne détient pas les droits requis.

Comment s'en protéger ?

Afin de protéger votre code contre les attaques CSRF, évitez si possible l'utilisation de requêtes GET dans votre code. Dans le cas où vous avez vraiment besoin des requêtes GET, l'utilisation des nonces permet de mieux protéger le code contre les attaques CSRF.

Pour plus d'information

« Quelques exemples basiques d’attaque sur une application web ». BlogoErgoSum. http://www.blogoergosum.com/16638-quelques-exemples-basiques-dattaque-sur-une-application-web

« Injection SQL ». Wikipédia. https://fr.wikipedia.org/wiki/Injection_SQL

« Cross-site scripting ». Wikipédia. https://fr.wikipedia.org/wiki/Cross-site_scripting

« Cross-Site Request Forgery ». Wikipédia. https://fr.wikipedia.org/wiki/Cross-Site_Request_Forgery

« OWASP Top 10 2013 - Les Dix Risques de Sécurité Applicatifs Web les Plus Critiques  ». OWASP. https://owasptop10.googlecode.com/files/OWASP%20Top%2010%20-%202013%20-%20French.pdf

« Plus de 10 outils pour tester la sécurité de votre site web ». Crazy WS. http://www.crazyws.fr/securite/plus-de-10-outils-pour-tester-la-securite-de-votre-site-web-IO8AX.html

Merci de partager ! Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponEmail this to someone
Catégories