2011-04-19 15 views
9

(Tomado de una entrevista de trabajo)¿Cómo se puede evitar que Javascript acceda a los datos de cookies de PHP?

¿Cuál de las siguientes respuestas es correcta?

  • utilizar el parámetro httponly al establecer la cookie
  • El usuario debe desactivar el soporte para Javascript
  • Es una configuración de cookies en el navegador
  • Sólo el dominio de emisión puede acceder a la cookie
  • Uno de ellos es en el cliente y el otro en el servidor, por lo que no es un problema
+0

Usted puede encontrar [ '$ Cookie-> setHttpOnly ($ httpOnly)'] (https://github.com/delight-im/ PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php # L129) útil, como se encuentra en [esta biblioteca independiente] (https://github.com/delight-im/PHP-Cookie). – caw

Respuesta

1

una cookie es del lado del cliente .....?

El usuario debe desactivar el soporte para Javascript - agresiva

utilizar el parámetro httponly al establecer la cookie - probablemente la respuesta correcta, pero como fue respondida anteriormente .. no son soluciones temporales supongo

1

cookies son un concepto de HTTP, no un concepto de PHP. PHP puede crear y modificar cookies, pero no existe una "COOKIE PHP". Al navegador no le importa si la respuesta fue generada por PHP, Python o perl cgi.

tratar de identificar lo que podría ser la verdadera cuestión, las posibilidades son:

  1. La cookie para mantener el identificador de sesión en el navegador
  2. una cookie enviado con setcookie

apuesto para la pregunta 1. Entiendo que la pregunta correcta debería haber sido:

"Por qué el lado del cliente que usa javascript o cualquier otro método, no puede ver o modificar la información almacenada en la sesión de PHP? "

Entonces, la respuesta es:.

"Porque, aunque las sesiones de PHP utilizan cookies, estos cookies sólo se utilizan para almacenar el id de sesión, no el contenido de la sesión El contenido de la sesión su almacenado en el servidor, no en la cookie en sí ".

5

Cuando se establece el encabezado de la cookie, puede especificar httpOnly.

Esto se puede hacer a través de la función de PHP setcookie:

setcookie ($name, $value, $expire, $path, $domain, $secure, $httponly) 

httpOnly indica al navegador que no permite JS para acceder a la cookie.

4

La respuesta correcta es la primera:

Use the httponly parameter when setting the cookie 

Esta bandera evita (en los navegadores compatibles, casi todos, incluyendo IE> = 6sp1) el motor de javascript en el navegador para acceder a las cookies con este parámetro. Puede establecer este indicador para las cookies normales con setcookie y para las cookies de sesión con session_set_cookie_params.

editado: soporte para IE> = 6sp1 en lugar de IE> = 7

+0

Suponiendo que los usuarios realmente mantienen sus navegadores razonablemente actualizados. https://www.owasp.org/index.php/HttpOnly#Browsers_Supporting_HttpOnly – PleaseStand

+0

@idealmachine si el usuario no mantiene su navegador actualizado, solo ignorará el indicador, pero la cookie se configurará –

+0

@ idealmachine, no te señalé, pero gracias por no downvoting:) –

Cuestiones relacionadas