2011-07-13 16 views
8

Hola, gracias de antemano ...
Estoy trabajando en un proyecto, necesito algunas aclaraciones para compartir datos entre dos sitios de una manera segura. Actualmente estoy usando Form Post para compartir datos. Pero pienso si hay una opción para obtener datos de sesión del sitio-1 del sitio-2, porque creo que usar una sesión es más seguro. No sé cómo usar una sesión entre dos sitios, pero espero que alguien aquí lo sepa.Comparta la sesión entre dos sitios web

De esta manera:
Sitio 1 de codificación

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

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

Sitio Código 2 en 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']; 

o hay alguna manera de hacer el intercambio seguro de datos entre dos sitio web que no sea publicación de formulario, por favor dígame.
Gracias
Suyo,
Kaartikeyan R

encontrado Solución

tengo enviar el ID de cliente y Monto a través de CURL a la segunda página web, en la que crear un registro en la tabla para esto y generar ID encriptado con el ID del registro, y devuelva el ID encriptado.

Así que en el primer sitio web recibo la identificación cifrada y la utilizo en la redirección de URL al segundo sitio web.

En el segundo sitio web con el ID cifrado, obtengo el ID y el monto del cliente.

+2

Trate de mantener todo lo que necesita para compartir datos confidenciales en un solo lugar. – Eddie

+0

Guarde la sesión en una base de datos a la que se puede acceder desde el servidor –

Respuesta

17

Urk. En primer lugar, nunca, nunca hacer esto:

$session_id = $_REQUEST['session_id']; 

Esto provoca un camión de seguridad hoyos que nos referimos como 'fijación de sesión' (leer más: http://en.wikipedia.org/wiki/Session_fixation).

Parece que eres bastante pesado en seguridad. Si necesita compartir datos del sitio 1 al sitio 2, debe hacerlo a través de un puente de consumo único:

1). Haga clic en un enlace en el Sitio 1 a un archivo manejador, llamémoslo redir.php.

2). Redir.php primero verifica los datos de la sesión existente.

3). Redir.php escribe información relevante en una fila de DB, junto con algún tipo de identificador (por ejemplo, un hash MD5 del ID de usuario + '_' + hora actual), más un indicador 'consumido', establecido como falso.

4). Redir.php hace una redirección 301 hacia el Sitio 2, junto con el identificador.

5). El sitio 2 lee la fila relevante de la base de datos.

6).Si los datos son buenos y aún no se han 'consumido', devuelva un resultado exitoso y marque los datos como consumidos.

7). Si los datos se han consumido, arroje algún tipo de error.

Existen formas más complejas de hacerlo, pero creo que esto maneja lo que estás tratando de hacer.

+0

Rechazaría la "Urk. Primero, nunca haga esto:", pero tendría que rechazarla incluso por sugerirla. Sabes que no leerán tus advertencias ... – adlawson

+0

@adlawson - ¿Qué sugerí? Estaba citando su código. –

+0

ah, me disculpo. No vi que esa fuera su sugerencia. +1 para la advertencia – adlawson

1

puede usar un back-end de sesión común para ambos sitios, ej. almacenar la sesión en una base de datos

para el reemplazo del motor de archivos integrado se puede utilizar la función session_set_save_handler

+0

gracias por su respuesta – rkaartikeyan

Cuestiones relacionadas