Dans le développement Web moderne, garantir la sécurité du site Web est une responsabilité importante des développeurs. Les navigateurs fournissent de nombreux mécanismes pour améliorer la sécurité du site Web en définissant des en-têtes HTTP spécifiques, tels que des options X-Frame , des options de type X-Content , des en-têtes de transport strict , etc.
En PHP, la façon la plus courante de définir des en-têtes HTTP est d'utiliser la fonction d'en-tête () . Cet article présentera en détail comment définir des options X-Frame et d'autres en-têtes HTTP sécurisés courants à l'aide de la fonction d'en-tête () de PHP.
Les options X-Frame sont utilisées pour éviter que les pages Web ne soient intégrées dans <frame> , <srame> ou <objet> , et pour éviter les attaques de jacking.
Exemple de code:
<?php
// Interdit d'être intégré iframe milieu
header('X-Frame-Options: DENY');
// Seuls les intégres du même nom de domaine sont autorisés
// header('X-Frame-Options: SAMEORIGIN');
// Autoriser l'intégration spécifique du domaine tiers(Avis:La plupart des navigateurs ALLOW-FROM Mauvais soutien)
// header('X-Frame-Options: ALLOW-FROM https://m66.net');
?>
Il vous suffit d'appeler Header () avant toute sortie, qui peut généralement être placée en haut du fichier PHP. Remarque: une fois le contenu de sortie (tel que Echo ), l'appel en tête () entraînera une erreur.
En plus des options X-Frame , vous pouvez également ajouter les en-têtes de sécurité suivants:
<?php
// prévenir MIME Type d'obscurcissement
header('X-Content-Type-Options: nosniff');
// Navigateur activé XSS Protéger(Avis:Les navigateurs modernes ont obsolète)
header('X-XSS-Protection: 1; mode=block');
// Usage forcé HTTPS(Nécessite une configuration HTTPS Certificat)
header('Strict-Transport-Security: max-age=31536000; includeSubDomains; preload');
// Définir la politique de sécurité du contenu(CSP)
header("Content-Security-Policy: default-src 'self'; img-src 'self' https://m66.net; script-src 'self'");
?>
La combinaison de ces en-têtes peut améliorer considérablement la sécurité du site, mais elle doit être configurée avec prudence en fonction des besoins réels, en particulier CSP, sinon il peut provoquer des défaillances normales de chargement des ressources.
Si vous souhaitez définir ces têtes de sécurité uniformément sur l'ensemble du site, le moyen le plus recommandé est:
Si vous utilisez Apache, vous pouvez le définir dans .htaccess .
Si vous utilisez Nginx, vous pouvez le définir dans le fichier de configuration.
Si vous devez utiliser PHP, vous pouvez l'ajouter via le fichier d'entrée du site Web (tel que index.php ou l'entrée globale du framework).
Exemple (fichier d'entrée):
<?php
// Configurez les têtes de sécurité de manière unifiée
header('X-Frame-Options: DENY');
header('X-Content-Type-Options: nosniff');
header('Strict-Transport-Security: max-age=31536000; includeSubDomains; preload');
header("Content-Security-Policy: default-src 'self'; img-src 'self' https://m66.net; script-src 'self'");
// Logique commerciale ultérieure
require 'app/bootstrap.php';
?>
Appelé avant la sortie : l'en-tête () doit être appelé avant toute sortie (y compris les espaces, les ruptures de ligne).
Vérification des outils de débogage : vous pouvez utiliser les outils de développement du navigateur (panneau réseau) ou la commande curl -i pour vérifier si l'en-tête a été ajouté avec succès.
Test de l'environnement de production : Après avoir ajouté une tête de sécurité, assurez-vous d'effectuer des tests complets dans l'environnement de production pour vous assurer que les fonctions et les ressources normales ne sont pas affectées.