Pues no siempre. Usando cookies, eres bueno. Pero el "puedo confiar con seguridad en que la identificación esté presente" me instó a extender la discusión con un punto importante (principalmente como referencia, ya que el recuento de visitantes de esta página parece bastante alto).
PHP puede configurarse para mantener sesiones reescribiendo URL, en lugar de cookies. ( Cómo es bueno o malo (<- vea, por ejemplo, el comentario más importante allí) es una pregunta separada , ahora sigamos con la actual, con solo una nota al margen: el problema más destacado con las sesiones basadas en URL: lo evidente visibilidad de la ID de sesión desnuda: no es un problema con las llamadas internas de Ajax; pero luego, si está activado para Ajax, también está activado para el resto del sitio, así que allí ...)
En el caso de las sesiones de reescritura de URL (sin cookies), las llamadas de Ajax deben ocuparse de que sus URL de solicitud estén correctamente diseñadas. (O puede implementar su propia solución personalizada. Incluso puede recurrir al mantenimiento de sesiones en el lado del cliente , en casos menos exigentes). El punto es la atención explícita necesaria para la continuidad de la sesión, si no utiliza cookies:
Si el Ajax llama solo extraen las URL textualmente del HTML (tal como se reciben de PHP), eso debería estar bien, ya que ya están cocinadas (umm, cookified).
Si necesitan ensamblar los URI de solicitud ellos mismos, la ID de sesión debe agregarse a la URL manualmente. (Marque aquí , o las fuentes de la página generadas por PHP ( con reescritura de URL activada ) para ver cómo hacerlo).
De OWASP.org :
Efectivamente, la aplicación web puede usar ambos mecanismos, cookies o parámetros de URL, o incluso cambiar de uno a otro (reescritura automática de URL) si se cumplen ciertas condiciones (por ejemplo, la existencia de clientes web sin soporte de cookies o cuando las cookies no son aceptado debido a preocupaciones de privacidad del usuario).
De un foro Ruby publicación en el :
Cuando se usa php con cookies, la ID de sesión se enviará automáticamente en los encabezados de solicitud incluso para Ajax XMLHttpRequests. Si usa o permite sesiones php basadas en URL, deberá agregar el ID de sesión a cada URL de solicitud de Ajax.
HttpOnly
bandera al configurar una cookie, lo que significa que su Javascript no podrá ver la cookie. Sin embargo la cookie será todavía ser enviado tanto para AJAX y solicitudes de páginas regulares y seguir trabajando exactamente lo mismo. Tu Javascript simplemente no lo verádocument.cookie
.