


Explication complète des vulnérabilités PHP (7)-Détournement de session
Le serveur et le client communiquent via des sessions. Lorsque le navigateur du client se connecte au serveur, le serveur établira une session pour l'utilisateur. La session de chaque utilisateur est indépendante et maintenue par le serveur. La session de chaque utilisateur est identifiée par une chaîne unique, appelée identifiant de session. Lorsqu'un utilisateur fait une demande, l'en-tête http envoyé contient la valeur de l'identifiant de session. Le serveur utilise l'identifiant de session dans l'en-tête http pour identifier quel utilisateur a soumis la demande.
La session enregistre les données personnelles de chaque utilisateur. Les applications Web générales utiliseront la session pour enregistrer les comptes d'utilisateurs et les mots de passe authentifiés. Lors de la conversion de différentes pages Web, si vous devez vérifier l'identité de l'utilisateur, utilisez le compte et le mot de passe enregistrés dans la session pour comparer. Le cycle de vie de la session commence lorsque l'utilisateur se connecte au serveur et se termine lorsque l'utilisateur ferme le navigateur ou se déconnecte lorsque la fonction session_destroy supprime les données de session. Si l'utilisateur n'utilise pas l'ordinateur dans les 20 minutes, la session se terminera automatiquement.
Architecture d'application de traitement de session PHP
Détournement de session
Le piratage de session fait référence à l'attaquant utilisant divers moyens pour obtenir l'identité de la session de l'utilisateur cible identifiant. Une fois l'ID de session obtenu, l'attaquant peut utiliser l'identité de l'utilisateur cible pour se connecter au site Web et obtenir les autorisations d'utilisation de l'utilisateur cible.
Méthodes permettant aux attaquants d'obtenir l'identifiant de session de l'utilisateur cible :
1) Craquage par force brute : essayez différents identifiants de session jusqu'à ce qu'ils soient piratés.
2) Calcul : Si l'identifiant de session est généré de manière non aléatoire, il est possible de le calculer
3) Vol : Utilisez l'interception du réseau, les attaques XSS et d'autres méthodes pour obtenir
Étapes d'attaque par piratage de session
Instance
//login.php session_start(); if (isset($_POST["login"])) { $link = mysql_connect("localhost", "root", "root") or die("无法建立MySQL数据库连接:" . mysql_error()); mysql_select_db("cms") or die("无法选择MySQL数据库"); if (!get_magic_quotes_gpc()) { $query = "select * from member where username=’" . addslashes($_POST["username"]) . "’ and password=’" . addslashes($_POST["password"]) . "’"; } else { $query = "select * from member where username=’" . $_POST["username"] . "’ and password=’" . $_POST["password"] . "’"; } $result = mysql_query($query) or die("执行MySQL查询语句失败:" . mysql_error()); $match_count = mysql_num_rows($result); if ($match_count) { $_SESSION["book"] = 1; mysql_close($link); header("Location: http://localhost/index.php?user=" . $_POST["username"]); } ….. // 打开Session 访客的 Session ID 是:echo session_id(); ?>
Affichée après la connexion
Démarrer l'attaque
//attack.php
php
//Ouvrir la session
session_start ();
echo "L'ID de session de l'utilisateur cible est :" . session_id() . "
";
echo "Le nom d'utilisateur de l'utilisateur cible est : " $_SESSION[. "username"] . "
"
echo "Le mot de passe de l'utilisateur cible est :"
/ . / Définissez le nombre de livres sur 2000
$_SESSION["book"] = 2000;
?>
Soumettre http://localhost/attack .php?PHPSESSID=5a6kqe7cufhstuhcmhgr9nsg45 Cet identifiant est obtenu ID de session client, après avoir actualisé la page client
attaque fixe de session
Les pirates peuvent terminer l'attaque en envoyant l'identifiant de session à l'utilisateur
http://localhost/index.php?user=dodo&PHPSESSID=1234 Envoyer ce lien à l'utilisateur dodo pour l'afficher
Ensuite, l'attaquant visite http://localhost/attack.php?PHPSESSID=1234, la page client s'actualise et trouve
Méthodes de prévention
1) Changer régulièrement l'identifiant de session
La fonction bool session_regenerate_id([bool delete_old_session])
delete_old_session est true , supprimez l'ancien fichier de session ; si faux, conservez l'ancienne session, la valeur par défaut est false, facultatif
ajoutez
au début de l'index. php session_start();
session_regenerate_id(TRUE);
......
De cette façon, un nouvel identifiant de session sera généré à chaque rechargement
2) Changer le nom de la session
Le nom par défaut de la session est PHPSESSID Cette variable sera enregistrée dans le cookie Si le pirate ne capture pas le paquet et ne l'analyse pas, il ne pourra pas deviner ce nom et bloquer certaines attaques
session_start();
session_name("mysessionid");
......
3) Désactiver l'identifiant de session transparent
L'identifiant de session transparent signifie que lorsque la requête http dans le navigateur n'utilise pas de cookies pour spécifier l'identifiant de session, la session l'identifiant est transmis à l'aide d'un lien ; ouvrez php.ini, éditez
session.use_trans_sid = 0
Dans le code
int_set( "session.use_trans_sid", 0);
session_start();
……
4) Vérifier uniquement l'identifiant de session à partir du cookie
session.use_cookies = 1 signifie utiliser des cookies pour stocker l'identifiant de session
session.use_only_cookies = 1 signifie utiliser uniquement des cookies pour stocker l'identifiant de session, ce qui peut être évité Attaque de fixation de session
Dans le code
int_set("session.use_cookies", 1);
int_set("session.use_only_cookies", 1); p>
5) Utiliser l'URL pour transmettre les paramètres cachés
session_start();
$seid = md5(uniqid(rand()), TRUE)) ;
$_SESSION["seid"] = $seid;
Bien que l'attaquant puisse obtenir les données de session, il ne peut pas connaître la valeur de $seid. Il peut confirmer en vérifiant la valeur de seid si la page actuelle est appelée par le programme Web lui-même.
Ce qui précède est le contenu de la solution de vulnérabilité PHP (7) - Détournement de session Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

L'extension PHP Client URL (CURL) est un outil puissant pour les développeurs, permettant une interaction transparente avec des serveurs distants et des API REST. En tirant parti de Libcurl, une bibliothèque de transfert de fichiers multi-protocol très respectée, PHP Curl facilite Efficient Execu

Alipay Php ...

Voulez-vous fournir des solutions instantanées en temps réel aux problèmes les plus pressants de vos clients? Le chat en direct vous permet d'avoir des conversations en temps réel avec les clients et de résoudre leurs problèmes instantanément. Il vous permet de fournir un service plus rapide à votre personnalité

L'article traite de la liaison statique tardive (LSB) dans PHP, introduite dans PHP 5.3, permettant une résolution d'exécution de la méthode statique nécessite un héritage plus flexible. Problème main: LSB vs polymorphisme traditionnel; Applications pratiques de LSB et perfo potentiel

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

L'article traite des fonctionnalités de sécurité essentielles dans les cadres pour se protéger contre les vulnérabilités, notamment la validation des entrées, l'authentification et les mises à jour régulières.

L'article examine l'ajout de fonctionnalités personnalisées aux cadres, en se concentrant sur la compréhension de l'architecture, l'identification des points d'extension et les meilleures pratiques pour l'intégration et le débogage.

Envoyant des données JSON à l'aide de la bibliothèque Curl de PHP dans le développement de PHP, il est souvent nécessaire d'interagir avec les API externes. L'une des façons courantes consiste à utiliser la bibliothèque Curl pour envoyer le post� ...
