2011-07-13 7 views
8

Salut merci d'avance ...
Je travaille sur un projet, j'ai besoin de quelques précisions pour partager des données entre deux sites d'une manière hautement sécurisée. Actuellement, j'utilise Form Post pour partager des données. Mais je pense à si il y a une option pour obtenir des données de session de site-1 du site-2, parce que je pense que l'utilisation d'une session est plus sûre. Je ne sais pas comment utiliser une session entre deux sites, mais j'espère que quelqu'un ici le saura.Partager la session entre deux sites Web

Comme ceci:
Site 1 Codage

$_SESSION['customer_id'] = 'XYZ'; 
$_SESSION['total_amount'] = '100'; 

<a href=https://site2.com/do.php?session_id=<?=$_SESSION['session_id']?>>Click Here</a> 

Site 2 Code dans do.php

$session_id = $_REQUEST['session_id']; 
$shared_data = bla_bla_bla_function($session_id); 

$customer_id = $shared_data['customer_id']; 
$total_amount = $shared_data['total_amount']; 

ou est-il un moyen de faire le partage des données entre deux Site Web autre que le formulaire, s'il vous plaît dites-moi.
Merci
vôtre,
Kaartikeyan R

Trouvé Solution

J'envoyer l'ID client et montant via CURL au site En second lieu, en créant un enregistrement dans la table pour cela et générer ID chiffré avec l'ID d'enregistrement et renvoyer l'ID chiffré. Donc, dans le premier site Web, je reçois l'identifiant chiffré, et je l'utilise sur la redirection d'URL vers le deuxième site Web.

Sur le deuxième site Web avec l'ID crypté, je reçois le numéro de client et le montant.

+2

Essayez de conserver tout ce qui est nécessaire pour partager des données sensibles en un seul endroit. – Eddie

+0

Stockez la session dans une base de données accessible à partir du serveur –

Répondre

17

Urk. Tout d'abord, jamais, jamais faire ceci:

$session_id = $_REQUEST['session_id']; 

Cela provoque un trou de camion de sécurité que nous appelons « la fixation de session » (en savoir plus: http://en.wikipedia.org/wiki/Session_fixation).

Il semble que vous soyez assez lourd sur la sécurité. Si vous devez partager des données du site 1 vers le site 2, vous devez le faire via un seul pont de consommation:

1). Cliquez sur un lien sur le site 1 vers un fichier de gestionnaire, appelons-le redir.php.

2). Redir.php vérifie d'abord les données de session existantes.

3). Redir.php écrit les informations pertinentes dans une ligne DB, avec une sorte d'identifiant (par exemple, un hachage MD5 de l'ID utilisateur + '_' + heure actuelle), plus un indicateur 'consommé', défini sur false.

4). Redir.php effectue une redirection 301 vers le site 2, avec l'identifiant.

5). Le site 2 lit la ligne pertinente hors de la base de données.

6).Si les données sont bonnes et n'ont pas encore été «consommées», retournez un succès et marquez les données telles qu'elles sont consommées.

7). Si les données ont été consommées, lancez une sorte d'erreur.

Il existe des façons plus complexes de le faire, mais je pense que cela gère ce que vous essayez de faire.

+0

Je remettrais en question la fonction "Urk Tout d'abord, ne fais jamais ceci:", mais je devrais la rétrograder pour la suggérer. Vous savez qu'ils ne liront pas vos avertissements ... – adlawson

+0

@adlawson - Qu'ai-je suggéré? Je citais son code. –

+0

ah, je m'excuse. Je n'ai pas vu que c'était leur suggestion. +1 pour l'avertissement – adlawson

1

vous pourriez utiliser un backend de session commun pour les deux sites, par exemple. stocker la session dans une base de données

pour remplacer le backend de fichier intégré vous pouvez utiliser la fonction session_set_save_handler

+0

Merci pour votre réponse – rkaartikeyan

Questions connexes