Il est assez évident que la plupart d'entre nous programmeurs PHP ne veulent pas que notre travail publié soit piraté ou exploité d'une manière que nous n'avions pas l'intention. Je suis donc très prudent en demandant des moyens de contrer le détournement de session. Je sais qu'il y a la fonction session_regenerate_id() pour contrer partiellement le détournement de session mais j'étais plus curieux d'une autre méthode que j'ai trouvée:Méthodes de contournement de session piratage
En tant qu'utilisateur se connecte au site, vous prenez son user_id (ou un autre encore plus secret, prédéfini chaîne cryptée) (qui est inconnue pour les utilisateurs communs) sous forme de chaîne et vous la saliez avec des symboles prédéfinis aléatoires, md5() la chaîne et le définissez comme $ _SESSION ['code_utilisateur'] = $ chaîne_string; et chaque fois que cet utilisateur accède à une page, vous répétez la procédure et faites correspondre avec $ _SESSION ['user_code'], s'ils ne correspondent pas; détruire la session.
donc dans le code, il ressemblerait à quelque chose comme ceci (par exemple):
//user credentials are correct, user data is fetched from db
$_SESSION['username'] = $row[3]; //username
$_SESSION['password'] = $row[2]; //password
$_SESSION['user_id'] = $row[4]; //user_id
$salt1 = 'uNs819';
$salt2 = 'J2i';
$user_code = $salt1 . $row[4] . $salt2;
$user_code = md5($user_code);
$_SESSION['user_code'] = $user_code;
Et vous vérifiez si cela est correct au début de chaque page disponible avec:
//fetch user credentials from db again
//$row4 is the user_id
if($_SESSION['user_code'] != md5($salt1 . $row[4] . $salt2){
session_destroy();
}
I ne pense pas que l'utilisation de l'id_utilisateur dans le cadre du chiffrement est optimale, mais ce n'est qu'un exemple. De préférence j'utiliserai une chaîne md5 de l'horodatage de quand l'utilisateur a été créé. Mais si je n'étais pas clair, ma question principale est que cette méthode est solide contre le détournement de session, pourquoi/pourquoi pas?
Alien13 n'a pas demandé CSRF, et ce que vous décrivez cassera si l'utilisateur ouvre une deuxième fenêtre – symcbean