Foros del Web » Programando para Internet » PHP »

pasar de HTTP a HTTPS

Estas en el tema de pasar de HTTP a HTTPS en el foro de PHP en Foros del Web. Estoy desarrollando una tienda web y llegado el punto del checkout ( pago ) redirecciono al usuario de HTTP a HTTPS siempre en el mismo ...
  #1 (permalink)  
Antiguo 28/04/2010, 03:31
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 8 meses
Puntos: 0
Pregunta pasar de HTTP a HTTPS

Estoy desarrollando una tienda web y llegado el punto del checkout ( pago ) redirecciono al usuario de HTTP a HTTPS siempre en el mismo dominio. Puesto que 'se pierden la variables de session' me pregunto cual seria la mejor forma de obtenerlos?

1.- Tabla temporal con los datos de la compra; al pasar de Http a Https envio a través de POST el identificador de usuario y recupero los datos de la tabla

2.- Paso el session_id de Http a Https y así recupero los datos de la sesión creada en Http. Supone esto un gran problema de seguridad??

Que opción es la mejor? O teneis alguna otra idea para tal fin?

Grácias!
  #2 (permalink)  
Antiguo 28/04/2010, 08:21
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: pasar de HTTP a HTTPS

Leyendo información en internet, indican que las sesiones se pierden cuando tratas de pasar la información de HTTP a HTTPS. Una de las formas de lograr que la sesión se mantenga es pasando los valores via "request" es decir GET o POST. Ahora (vas a tener que hacer la prueba e informarnos) habría que ver si es posible leer los cookies declarados por el servidor tanto en HTTP como HTTPS. Es decir, cuando crees la sesion en HTTP se crea un cookie con el ID de la sesión. Cuando pases a HTTPS verifica si puede leer ese cookie, es decir haz un var_dump a la variable $_COOKIE
Código PHP:
Ver original
  1. var_dump($_COOKIE);
y mira a ver si ve la sesión. Si es así, que lo puede leer, entonces solo tienes que indicar la sesión nuevamente. Algo así
Código PHP:
Ver original
  1. session_id($_COOKIE['PHPSESSID']);
Dudo mucho que funcione ya que si no aparece la sesion es porque no está leyendo el cookie.

Edito: Verifica si también grabando la sesión que se creo en otro cookie y ver si pasa la información del cookie entre HTTPS y HTTP.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 28/04/2010 a las 08:29
  #3 (permalink)  
Antiguo 28/04/2010, 09:36
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: pasar de HTTP a HTTPS

Grácias por la respuesta!!

Todavía no he instalado el certificado y no puedo hacer pruebas en https.

De todas formas he estado investigando y si el host name es el mismo entre HTTP y HTTPS el session_id es el mismo, pero no se mantienen las variables de sesión
Código PHP:
Ver original
  1. //http://www.dominio.com
  2. // session_id=2345fg...
  3. $_SESSION['carrito'] = 'LISTADO DE LOTES';
  4.  
  5. //https://www.dominio.com
  6. //session_id=2345fg...
  7. $_SESSION['carrito'] = ''; // Vacia

Cita:
Iniciado por abimaelrc Ver Mensaje
Dudo mucho que funcione ya que si no aparece la sesion es porque no está leyendo el cookie.
crea otra cookie cone el mismo session_id pero esta vacia!!! Por motivos de seguridad no se transmiten las cookies de session entre diferentes dominios


Cita:
Iniciado por abimaelrc Ver Mensaje
Edito: Verifica si también grabando la sesión que se creo en otro cookie y ver si pasa la información del cookie entre HTTPS y HTTP.
Cuando vuelve de HTTPS A HTTP las variables creadas en HTTP continuan ahí y vice versa. Aún teniendo el mismo session_id las variables son independientes para los dominios!!!


Como tu bien dices, una opción es pasar las variables de HTTP a HTTPS ( un poco laborioso ). La otra, que resulta más segura: guardar las sesiones en la DDBB (session_set_save_handler) y recuperar la información a través de queries en HTTPS ( puesto que el session_id sigue siendo el mismo )

Que te parece?
  #4 (permalink)  
Antiguo 28/04/2010, 09:55
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: pasar de HTTP a HTTPS

Cita:
Iniciado por cocodj69 Ver Mensaje
crea otra cookie cone el mismo session_id pero esta vacia!!! Por motivos de seguridad no se transmiten las cookies de session entre diferentes dominios
pero no habías indicado que es el mismo dominio pero pasando de HTTP a HTTPS y vice-versa.


Cita:
Iniciado por cocodj69 Ver Mensaje
La otra, que resulta más segura: guardar las sesiones en la DDBB (session_set_save_handler) y recuperar la información a través de queries en HTTPS ( puesto que el session_id sigue siendo el mismo )

Que te parece?
Eso lo recomiendan también, lo de la base de datos, pero ¿cómo vas a saber qué usuario es el que lleva qué id? Me imagino que vas a tener que almacenar la información del id del usuario que se logueo en algún cookie y luego hacer la consulta. Que entiendo que es también lo mismo el loguear el usuario y grabar el id de la sesión en otro cookie con otro nombre.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 28/04/2010, 10:31
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: pasar de HTTP a HTTPS

Cita:
Iniciado por abimaelrc Ver Mensaje
pero no habías indicado que es el mismo dominio pero pasando de HTTP a HTTPS y vice-versa.
Si el dominio es diferente, se crea un nuevo session_id, pero si el dominio es el mismo cambiando sólo el protocolo se mantiene el session_id pero no las variables ( sólo estarán disponibles las creadas en cada protocolo )

Cita:
Iniciado por abimaelrc Ver Mensaje
Eso lo recomiendan también, lo de la base de datos, pero ¿cómo vas a saber qué usuario es el que lleva qué id? Me imagino que vas a tener que almacenar la información del id del usuario que se logueo en algún cookie y luego hacer la consulta. Que entiendo que es también lo mismo el loguear el usuario y grabar el id de la sesión en otro cookie con otro nombre.
Pero si se mantiene el id, no es necesario saber el id perteneciente al usuario!!! Al pasar de http a https el id es el mismo y sólo tenemos que extraer la info de DDBB en base a ese id!!. No entiendo lo que me quieres decir: El session_id sería único para cada usuario en todo momento; no hay lugar a la confusión!!!

Explicamé si no estoy en lo cierto!!
  #6 (permalink)  
Antiguo 28/04/2010, 10:41
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: pasar de HTTP a HTTPS

Estas mezclando lo que te quiero decir. Primero si estas usando un solo dominio pero solo cambias de HTTP a HTTPS no pasa el valor del id de la sesión. Una forma de lograrlo es como indicaste de la base de datos. Pero vamos a suponer que yo me conecto y se guarda esa información en la base de datos y tu también te conectas y se graba tu información en la base de datos. Cuando vayas a pasar a https vas a verificar en la base de datos la información pero ¿cómo va a saber el sistema que id de sesión me corresponde a mi y a ti? Vas a tener que grabar en algún lugar información básica mía que cuando hagas el query pueda identificarme y me traiga entonces la información de la sesión. Entonces te pregunto ¿cómo piensas lograr eso?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 28/04/2010, 11:04
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: pasar de HTTP a HTTPS

Cita:
Iniciado por abimaelrc Ver Mensaje
Estas mezclando lo que te quiero decir. Primero si estas usando un solo dominio pero solo cambias de HTTP a HTTPS no pasa el valor del id de la sesión.
Si que lo pasa!! Se mantiene el session_id pero no las variables de session. Tengo que comprobarlo pero según lo que he leido entre el mismo dominio ocurre así!!

Cita:
Iniciado por abimaelrc Ver Mensaje
Una forma de lograrlo es como indicaste de la base de datos. Pero vamos a suponer que yo me conecto y se guarda esa información en la base de datos y tu también te conectas y se graba tu información en la base de datos. Cuando vayas a pasar a https vas a verificar en la base de datos la información pero ¿cómo va a saber el sistema que id de sesión me corresponde a mi y a ti? Vas a tener que grabar en algún lugar información básica mía que cuando hagas el query pueda identificarme y me traiga entonces la información de la sesión. Entonces te pregunto ¿cómo piensas lograr eso?
En caso de perdudar el session_id tendría que pasar el session_id de http a https a través de la url ( get or post ), o añadir en la tabla de las sesiones un nuevo campo donde iria el usuario_id ( md5(ID_USER + TIME() ) ) y al pasar de http a https pasaría dicho valor y entonces realizaria la validación; Podría incluso añadir también la IP también y compararla; y incluso un periodo máximo de 30 segundos para realizar dicha comprobación

Que te parece? Tienes alguna otra opción? Lo que esta claro es que si el session_id no persite hay que pasar SI o SI de Http a Https algún identificador para extraer la información de la base de datos!! Suponiendo que las variables de sesión se guardan en DDBB,¿ sería seguro pasar el SID como parametro para extraer la info de la DDBB dado que aunque la intercepten, la cookie en el servidor estará vacia????
  #8 (permalink)  
Antiguo 28/04/2010, 11:09
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: pasar de HTTP a HTTPS

Bueno según lo que he leído por (ejemplo http://stackoverflow.com/questions/4...o-https-in-php), indican que no pasa el id por eso no puedes visualizar las variables. No a la inversa. Yo no he hecho la prueba, tendría que activar lo de SSL para poder indicarte mejor, pero cuando hagas la prueba nos dejas saber como te fue.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 28/04/2010, 11:21
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: pasar de HTTP a HTTPS

Yaps!! En otros foros decian que si se mantenia!! Cuando haga la prueba os avisaré. Pero un cosa más, por hacerme a la idea...

...En caso de NO perdudar el session_id tendría que pasar el session_id de http a https a través de la url ( get or post ), o añadir en la tabla de las sesiones un nuevo campo donde iria el usuario_id ( md5(ID_USER + TIME() ) ) y al pasar de http a https pasaría dicho valor y entonces realizaria la validación; Podría incluso añadir también la IP también y compararla; y incluso un periodo máximo de 30 segundos para realizar dicha comprobación

Que te parece? Tienes alguna otra opción? Lo que esta claro es que si el session_id no persite hay que pasar SI o SI de Http a Https algún identificador para extraer la información de la base de datos!! Suponiendo que las variables de sesión se guardan en DDBB,¿ sería seguro pasar el SID como parametro para extraer la info de la DDBB dado que aunque la intercepten, la cookie en el servidor estará vacia????

Grácias!!
  #10 (permalink)  
Antiguo 28/04/2010, 11:25
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: pasar de HTTP a HTTPS

pareces grabadora. Bueno como te indique no he hecho la prueba, lo que todos coinciden es que puedes pasar la información a través de url. Yo como te indique, para no pasar la información por URL, haría pruebas intentando grabar la información en una cookie adicional y ahí guardaba la información de la sesion y con session_id ingreso el valor de la cookie adicional. O como indicas ingresar la información en una base de datos y corroborar. Pero todo quedará en teoría hasta que hagas la prueba.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #11 (permalink)  
Antiguo 28/04/2010, 12:08
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: pasar de HTTP a HTTPS

jeje

Tan sólo quiero estar seguro con un tema de considerable seguridad.

Cuando haga las pruebas ya os actualizaré!!

Grácias!

Etiquetas: https, pasar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:14.