ClickJacking est une technologie malveillante qui clique sans le savoir sur certains contenus sur la page Web contrôlés par l'attaquant en intégrant des pages Web dans des iframes transparents. Pour empêcher cette attaque, nous pouvons empêcher la page d'être imbriquée dans l'IFRAME via des informations d'en-tête HTTP.
En PHP, nous pouvons utiliser la fonction d'en-tête () pour définir l'en-tête de réponse HTTP approprié pour atteindre la défense.
Le principe d'attaque de jacking est de inciter les utilisateurs à cliquer sur les éléments d'interface qu'ils ne peuvent pas voir, permettant aux utilisateurs d'effectuer des actions à leur connaissance. Habituellement, un attaquant utilisera un IFRAME pour nicher la page du site Web Target dans sa propre page Web, et couvrira le contenu de la page par transparence ou d'autres moyens, afin que les utilisateurs effectuent réellement les actions qu'ils souhaitent lorsqu'ils fonctionnent du contenu apparemment inoffensif.
La meilleure façon d'empêcher les pages d'être imbriquées dans les iframes est d'utiliser l'en-tête de réponse X-Frame-Options . Cet en-tête indique au navigateur si la page actuelle est autorisée à être imbriquée dans un iframe. L'utilisation de cette méthode peut effectivement empêcher les attaques de jacking de clics.
Dans PHP, vous pouvez envoyer des en-têtes de réponse HTTP via la fonction d'en-tête () . Pour empêcher la page d'être imbriquée dans un iframe, vous pouvez utiliser le code suivant:
<?php
// installation X-Frame-Options Empêcher les pages d'être imbriquées iframe milieu
header('X-Frame-Options: DENY');
// Ou si vous voulez autoriser uniquement les pages imbriquées sous le nom de domaine spécifié,Disponible:
header('X-Frame-Options: ALLOW-FROM https://m66.net');
// Continuez à traiter d'autres contenus sur la page
?>
Nier : Toute page Web est interdite de charger la page actuelle via un iframe.
SameRigin : seules les pages avec la même source (c'est-à-dire le même nom de domaine) sont autorisées à charger la page actuelle via un iframe.
Autoriser URI : permet au nom de domaine spécifié de charger la page actuelle via un iframe. Notez que l'option Autoriser est obsolète dans certains navigateurs tels que Firefox, donc le refuser ou le mêmeorigine est généralement recommandé.
Voici un exemple pratique montrant comment définir l'en-tête X-Frame-Options dans une page PHP pour empêcher d'autres sites de nicher la page actuelle dans un iframe:
<?php
// prévenir Clickjacking attaque
header('X-Frame-Options: DENY');
// installation其他 HTTP Chef de réponse
header('Content-Type: text/html; charset=UTF-8');
// Contenu de la page
echo "<h1>Ceci est une page sûre</h1>";
echo "<p>Cette page ne peut pas être imbriquée iframe milieu。</p>";
?>
Bien que les options X-Frame sont un moyen efficace d'empêcher les attaques de jacking, ce n'est pas la seule défense. Vous pouvez également utiliser la politique de sécurité du contenu (CSP) pour renforcer davantage la protection. Par exemple, en définissant l'en-tête CSP, interdisant explicitement aux pages d'être imbriquées dans un iframe:
<?php
// utiliser CSP Interdire la nidification
header("Content-Security-Policy: frame-ancestors 'none';");
// Contenu de la page
echo "<h1>Ceci est une page sûre</h1>";
?>
En définissant des anciens de trame sur «aucun», vous pouvez désactiver complètement les pages en étant imbriqués dans n'importe quel iframe, ce qui est plus flexible que les options X-Frame .
Cela peut effectivement empêcher votre page d'être imbriquée dans un iframe et éviter les attaques de jacking. Selon vos besoins, vous pouvez choisir d'utiliser des options X ou une politique de sécurité du contenu (CSP) pour atteindre la défense.