2010-04-15 23 views
9

Cómo puedo cifrar y descifrar tarde un valor de una cookie en PHP (qué tan seguro será el cifrado)galletas Cifrado en PHP

+4

No veo cómo esto es útil, debe usar $ _SESSION [] para obtener información confidencial. – rook

Respuesta

-1

No puedo simplemente pensar en una situación donde el cifrado de datos en la cookie es útil. Si desea conservar datos secretos sobre el usuario o sus preferencias, información, lo que sea, guárdelo en el servidor en archivos, en la sesión o en la base de datos, pero no en la computadora del cliente.

Por otro lado, si crea una autenticación, entonces debe usar sesiones en lugar de crear valores secretos de cookies cifradas. Las sesiones no se implementaron por nada, son el camino a seguir.

+4

¿No es una gran parte de una apatía de API RESTful? En ese caso, almacenar datos confidenciales a través de cookies cifradas con clave secreta es bastante fundamental.¿O me estoy perdiendo algo? – PandemoniumSyndicate

+0

Si su API es realmente sin estado, no hay sesión. Debe ser el cliente responsable de la información de la tienda desde la solicitud. – TlmaK0

+2

"No puedo simplemente pensar en una situación donde el cifrado de datos en la cookie es útil". El OP no preguntó si podía o no; presumiblemente, el OP sabe "por qué" y preguntó "cómo". No respondiste esa pregunta. –

8
Hay

una variedad de maneras diferentes para cifrar la información en las cookies y otros lugares. La fuerza del cifrado variará según el método que elija para hacer el cifrado real. mycrypt es un buen lugar para comenzar. See this answer para ver un ejemplo del uso de mcrypt.

No recomiendo poner nada sensible en una cookie, incluso si va a ser encriptada. Demasiado tentador para que alguien se agriete. Intenta seguir las sesiones si puedes.

+0

"Demasiado tentador para que alguien se rompa" Pero ... presumiblemente ... si usas criptografía fuerte, sin la clave, no pueden descifrarla. Y si tienen la clave, eso significa que ya han descifrado su servidor (en cierta medida dañina), por lo que tiene problemas más grandes de los que preocuparse. El tiempo de caducidad de la cookie, por ejemplo, podría considerarse confidencial para la tienda. en el cliente, pero la ventaja de almacenarla cifrada en el lado del cliente es clara: puede verificar inmediatamente si una sesión sigue siendo válida y, a menos que hayan descifrado su casilla, no pueden configurarla de todos modos. –

0

Estoy totalmente de acuerdo con las otras respuestas: si los datos son realmente delicados, se deben almacenar en el servidor en una sesión, no en una cookie.

En cuanto a las formas de encriptar los contenidos de la cookie, la extensión de PHP Suhosin proporciona la capacidad de transparently encrypt all cookies. Si tiene la capacidad de instalar extensiones de PHp, esto puede o no ser más fácil para usted que escribir su propio esquema de cifrado.

-1

Si la cookie está cifrada de forma segura (por ejemplo, con un secreto almacenado en el servidor que cambia periódicamente), no veo ningún problema para almacenar datos útiles en la cookie. ¿Por qué almacenarlo en el servidor? Haga que el cliente trabaje para un cambio, especialmente si se trata de preferencias. ¿Por qué el servidor debe almacenar y recuperar constantemente datos de un archivo de sesión? ¿Qué sucede si tiene cientos de miles de usuarios golpeando su sitio? Ahora debe mantener cientos de miles de archivos de sesión.

+1

La pregunta del OP fue "¿Cómo puedo cifrar las cookies en PHP, y qué tan seguro sería?", Y su respuesta fue "Pude ver que ser una persona útil quiero hacer". Ninguna parte de la pregunta del OP fue respondida, aquí. –

0

Puedo pensar en un uso razonable para esto. Supongamos que tiene una granja de servidores grande, va a tener un cuello de botella en la base de datos y/o servidor de memoria para gestionar las solicitudes de sesión ... "¿este usuario está conectado?"

Si almacenara los datos de sesión de los usuarios como un valor encriptado en la cookie, puede evitar tener que hacer bastantes lecturas/escrituras y permitir un almacenamiento de cookies de tamaño ilimitado ya que hay 0 impacto en su lado que no sea la CPU vinculada para el cifrado/descifrado de los datos de la cookie.

Ruby on Rails lo hace de forma predeterminada, aunque solo firma los datos y no los encripta. Existe una implementación alternativa que encripta los datos con su propia clave y firma para que el usuario no pueda ver qué datos almacena en su sesión.

+1

La pregunta del OP era "¿Cómo puedo cifrar las cookies en PHP, y qué tan seguro sería?", Y su respuesta fue "Pude ver que ser una cosa útil una persona querría hacer". Ninguna parte de la pregunta del OP fue respondida, aquí. –