Estoy estudiando un caso en el que tengo un backend REST (basado en php) y un front-end HTML + JS + PHP híbrido en diferentes subdominios:
backend.example.com <-- A RESTful API to provide some XHR requests.
*.example.com <-- Any other domains on the same server that use the same PHP Session.
Una forma de iniciar una sesión persistente en PHP sin la colocación de una cookie de sesión es crear su propio ID de sesión y configurarlo con la función session_id ().
De hecho, deshabilitar el almacenamiento de cookies de sesión no me permite mantener la sesión en los subdominios. Así que implementé una clase de administrador de sesión, para controlar el ciclo de vida de todas mis clases y permitir compartir la sesión entre subdominios:
public static function sessionStart($name, $limit, $trusttoken){
(...)
$userip = $_SERVER['REMOTE_ADDR'];
$userbrowseragent = $_SERVER['HTTP_USER_AGENT'];
$id = md5($userip . $salt . $userbrowseragent . $sessionname); //Creating unique ID
session_id($id);
session_start();
(...)
}
¿Es una forma segura de compartir sesiones en el mismo servidor pero usando diferentes subdominios?
Nota
- Las sesiones se leerán solo en el lado del servidor (archivos PHP)
- No me importa confiar en las solicitudes de XHR.
- Evito exponer el ID de sesión en las solicitudes.
- No es posible usar SSL.