Position actuelle: Accueil> Derniers articles> Session PHP Compétences de protection contre les attaques croisées: paramètres des cookies, vérification de la source et mécanisme de jeton

Session PHP Compétences de protection contre les attaques croisées: paramètres des cookies, vérification de la source et mécanisme de jeton

M66 2025-06-22

Mesures de prévention des sessions PHP pour les attaques inter-domaines

Dans les applications Web, les sessions sont un moyen important de suivre l'état de l'utilisateur et de stocker des informations. Cependant, en raison de l'ouverture de l'environnement Web, les données de session sont sensibles aux attaques inter-domaines. Cet article partagera des techniques de protection communes et pratiques en PHP et comprendra des exemples de code spécifiques.

1. Définir les propriétés de sécurité des cookies

L'ID de session est généralement stocké dans les cookies. Pour éviter les attaques de domaine transversal, la sécurité peut être améliorée en ajustant les attributs de cookies. Principalement impliqué:

  • Httponly : empêche JavaScript d'accéder aux cookies et évite de voler les identifiants de session via des scripts.
  • Sécurisé : Transmettez uniquement des cookies sur les connexions HTTPS pour éviter les attaques de l'homme au milieu.

Exemple de code:

session_start ();
<p>// Obtenez le paramètre de cookie actuel<br>
$ cookieParams = session_get_cookie_params ();</p>
<p>// définir des attributs de cookies sûrs<br>
session_set_cookie_params (<br>
$ cookieParams ["Lifetime"],<br>
$ cookieParams ["Path"],<br>
$ cookieParams ["domaine"],<br>
vrai, // sécurisé<br>
Vrai // httponly<br>
));</p>
<p>$ _Session ["nom d&#39;utilisateur"] = "user123";</p>
<p>session_write_close ();<br>

2. Vérifiez le nom de domaine source de la demande

En vérifiant le nom de domaine source demandé, assurez-vous que l'opération de session ne se produit que sous le nom de domaine autorisé, en réduisant le risque d'attaques entre domaine. Il peut être implémenté en utilisant $ _server ['http_referrer'] :

 if (isset($urlParts['host']) && $urlParts['host'] === $allowedDomain) {
    return true;
} else {
    return false;
}

}

// Utilisez l'exemple
if (validatereferrer ("example.com")) {
// Effectuer des opérations liées à la session
} autre {
// Source illégale, accès refusé ou invité
}

3. Générez et vérifiez les jetons pour éviter le CSRF

Générez un jeton unique pour chaque session, transportez-le lorsque le client demande et vérifiez la cohérence du jeton côté serveur pour empêcher les demandes de contrefaçon:

// générer des jetons
fonction générationtoken () {
    $ token = bin2hex (random_bytes (32));
    $ _Session ["csrf_token"] = $ token;
    retourner $ token;
}
<p>// Vérifiez le jeton<br>
fonction validateToken (token $) {<br>
return isset ($ _ session ["csrf_token"]) && $ _Session ["csrf_token"] === $ token;<br>
}</p>
<p>// générer des jetons et les sortir pour former<br>
$ token = generateToken ();</p>
<p>écho &#39;<form method="post"> &#39;;;<br>
écho &#39;<input type="hidden" name="csrf_token" value="' . $token . '"> &#39;;;<br>
écho &#39;<input type="submit" value="Soumettre"> &#39;;;<br>
écho &#39;</form> &#39;;;</p>
<p>// Vérifiez le traitement de la demande<br>
if (isset ($ _ post ["csrf_token"]) && validateToken ($ _ post ["csrf_token"])) {<br>
// Le jeton est valide, effectuez des opérations<br>
} autre {<br>
// Le jeton n&#39;est pas valide, l&#39;opération est refusée<br>
}<br>

Résumer

En définissant raisonnablement les attributs de cookies, en vérifiant le domaine de la source de demande et en adoptant le mécanisme de jeton, vous pouvez protéger efficacement les risques d'attaque inter-domaine de la session PHP. Il est recommandé de combiner des scénarios commerciaux spécifiques dans le développement réel, de continuer à prêter attention aux vulnérabilités de sécurité et à mettre à jour les politiques en temps opportun pour assurer les données des utilisateurs et la sécurité de la confidentialité.