JeuWeb - Crée ton jeu par navigateur
Sécuriser et contrôler l'accès aux comptes des utilisateurs - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Sécuriser et contrôler l'accès aux comptes des utilisateurs (/showthread.php?tid=4666)



Sécuriser et contrôler l'accès aux comptes des utilisateurs - Arkhanz - 01-10-2014

Bonjour tout le monde,

Je reviens après une longue absence (PC HS). Les projets avancent mais je rencontre un problème auquel je ne trouve pas de solution. J'ai mis en place un système visant à protéger l'accès aux comptes des joueurs par vérification d'IP comme c'est souvent implanté dans des MMORPG. C'est à dire qu'à la connexion, le script regarde si cette IP est reconnue sur ledit compte (donc si elle fait partie d'une liste d'IP autorisées ou si elle correspond à l'IP enregistrée à l'inscription) et si cette adresse n'est pas reconnue, l'utilisateur doit confirmer son identité avec sa réponse secrète.

Tout fonctionne bien, au détail près que le moindre changement d'IP, même si on reste sur le même ordinateur affole le script de connexion. Ce qui est normal, et c'est mon cas. J'ai récemment changé de FAI et ce dernier me fait constamment changer d'IP et du coup, je dois (pratiquement) à chaque connexion entrer ma réponse secrète.

En cherchant la solution je suis tombé sur ça :
$_SERVER['HTTP_X_FORWARDED_FOR']

Mais ça ne résout pas mon problème. J'en conclus donc qu'il doit être impossible d'utiliser ce genre de système sur navigateur et que de toute façon, l'IP n'a pas l'air d'être une valeur sûre en sécurité. Toutefois, peut-être qu'une solution viable m'a échappé ?

En vous remerciant d'avance,


RE: Sécuriser et contrôler l'accès aux comptes des utilisateurs - Xenos - 01-10-2014

Eh beh... "souvent implanté dans les MMORPG"? Vraiment? Si on a une IP dynamique, cela va franchement être lourd... Ou si on est sur mobile, et qu'on passe par des antennes différentes (qui seront peut-être tes sources d'IPs), ce sera encore pire... Et je ne parle ni des proxys (qui seront peut-être enregistrés à la place du client) ni du fait que cela ne protège en rien d'un Man-In-The-Middle. Enfin, comme n'importe qui peut changer ses headers, je doute que cela protège vraiment les utilisateurs (cela ne risque pas plutôt d'être très lourdingue de rentrer leur réponse secrète eux-même?)

Bref, je ne suis pas en faveur de l'idée.

J'aurai du lire le message avant de commencer ma réponse... Désolé!

Effectivement, ce système par nature, va être lourd et probablement inadapté à la finalité (protéger le compte). Facebook fait différemment: il enregistre un cookie de très très longue durée sur la machine cliente, pour la marquer. Si une machine non marquée tente de se connecter, FB demande confirmation (par téléphone par exemple). Evidemment, le cookie-marqeur n'est pas juste du type "Marquer=true", mais il s'agit plutôt d'un token qui a une correspondance en BDD. Autrement dit, le cookie-marquer ne doit pas pouvoir être prédit. Ainsi, peu importe l'IP ou le chemin réseau de la requête, ce qui est marqué, c'est la machine.

L'autre possibilité, plus pesante pour l'utilisateur mais plus simple à faire, consiste bêtement à envoyer un mail de notification à l'adresse du compte et ce, à chaque connexion à ce compte. Le compte n'est alors pas protégé, mais on est informé qu'une connexion a eue lieue. Si on n'a pas peur d'être lourdingue, ou si le compte doit vraiment être sécurisé, on peut inclure, dans le mail, un lien qui permet d'autoriser la connexion. Sinon, la connexion est refusée.
C'est très pesant par rapport à la solution FB (puisque l'on doit consulter sa boite à chaque connexion et cliquer dans le lien du mail); niveau phishing, c'est plutôt sécurisé (si on reçoit le mail sans avoir demandé de connexion, on ne l'autorise pas; mais à l'inserve, si on met un bouton "interdire la connexion" dans le mail, alors le phishing devient un risque important).

A mon avis, avant de perdre passer du temps sur des sécurités supplémentaires comme celles-là, mieux vaut finir le jeu: quand on commencera à avoir de nombreux comptes, il sera toujours temps d'ajouter des sécurités.


RE: Sécuriser et contrôler l'accès aux comptes des utilisateurs - Arkhanz - 02-10-2014

Xenos a écrit : Eh beh... "souvent implanté dans les MMORPG"? Vraiment? Si on a une IP dynamique, cela va franchement être lourd... Ou si on est sur mobile, et qu'on passe par des antennes différentes (qui seront peut-être tes sources d'IPs), ce sera encore pire... Et je ne parle ni des proxys (qui seront peut-être enregistrés à la place du client) ni du fait que cela ne protège en rien d'un Man-In-The-Middle. Enfin, comme n'importe qui peut changer ses headers, je doute que cela protège vraiment les utilisateurs (cela ne risque pas plutôt d'être très lourdingue de rentrer leur réponse secrète eux-même?)

Bien sûr, si ma phrase fait penser le contraire, je suis conscient que les MMORPG ou autre applications qui ont ce genre de sécurité ne se basent pas sur l'IP mais bien sur la reconnaissance de la machine (sinon je ne n'aurai pas à aller chercher ce foutu mail quand j'achète un nouveau PC grrrrrh :cogneSmile. Mais j'avais choisi l'IP parce que je ne voyais pas comment le faire sur navigateur.

Xenos a écrit : Effectivement, ce système par nature, va être lourd et probablement inadapté à la finalité (protéger le compte). Facebook fait différemment: il enregistre un cookie de très très longue durée sur la machine cliente, pour la marquer. Si une machine non marquée tente de se connecter, FB demande confirmation (par téléphone par exemple). Evidemment, le cookie-marqeur n'est pas juste du type "Marquer=true", mais il s'agit plutôt d'un token qui a une correspondance en BDD. Autrement dit, le cookie-marquer ne doit pas pouvoir être prédit. Ainsi, peu importe l'IP ou le chemin réseau de la requête, ce qui est marqué, c'est la machine.

Ah oui d'accord, merci bien pour ce tuyau. C'est la solution parfaite à mon problème et je n'avait pas pensé à passer par les cookies. Merci beaucoup :bave: