2017-10-11 2 views
0

La commutation d'URL «en coulisses» peut-elle être détectée? De telle sorte que lorsque cela se produit, l'utilisateur sur le site Web connecté est renvoyé vers sa page de connexion.CakePHP, PHP, la commutation d'URL peut-elle être détectée?

Nous avons un serveur de production, un serveur de transfert et un serveur de démonstration, qui se connectent à leurs bases de données respectives. Ils partagent le même matériel physique, fourni par Apache, à partir d'URL différentes sur le matériel. Nous utilisons PHP avec le framework CakePHP. Ce que j'ai fait un certain nombre de fois, c'est de me connecter normalement à l'un des sites Web, puis d'entrer l'URL de l'un des autres, et cela fonctionne toujours. L'autre site pense que je me suis connecté avec succès, alors qu'en fait je me suis connecté à l'un de ses "cousins". Il "sait" cela en raison des informations de session que tous les trois partagent apparemment.

Je suis sûr qu'il doit y avoir un risque de sécurité quelque part. Je devrais essayer avec un compte qui n'est actif que sur l'un des sites. C'est-à-dire, connectez-vous avec succès à un site Web, puis vérifiez si un «cousin» accepte ce compte qui est localement inactif en raison du changement d'URL.

Est-ce que cela peut être détecté et évité? Si c'est le cas, comment? Ou cette question est-elle sans conséquence?

Répondre

2

Vous devez utiliser clé de session différente pour chaque serveur

CakePHP 2.x par exemple:

AuthComponent::$sessionKey = 'Auth.ServerDev'; 

3.x CakePHP par exemple:

'storage'=>['className' => 'Session', 'key' => 'Auth.ServerDev'] 
+0

Merci, cela ressemble à cela devrait fonctionner. J'ai juste besoin de comprendre où dans notre système pour le mettre. – UncaAlby

0

Merci à @Bart de pointage moi dans une très bonne direction.

L'astuce que j'ai trouvé qui fonctionne dans CakePHP 2 est d'éditer le fichier APP/Config/core.php, de trouver le tableau de configuration 'Session' et de définir 'cookie' sur un nom unique.

.: par exemple

Configure::write('Session', array(
     'cookie' => 'OUR_PRODUCTION', // or "staging", "test", "XYZ", whatever 
     'defaults' => 'cake', 
     'timeout' => 60, 
     // other Session parameters 
));