PHP - Serialización de las entradas del usuario

3

Mi recopilación de entropía El sistema funciona mediante la serialización de las entradas del usuario:

$entropy=sha1(microtime().$pepper.$_SERVER['REMOTE_ADDR'].$_SERVER['REMOTE_PORT'].
$_SERVER['HTTP_USER_AGENT'].serialize($_POST).serialize($_GET).serialize($_COOKIE));

solo se realiza la serialización. no se realiza deserialización.

alguien había dicho:

  

sus entradas de usuario de serialización su base de datos es almuerzo gratis.

¿Es eso cierto?

¿hay algún problema de seguridad al serializar las entradas de los usuarios?

    
pregunta H M 30.04.2013 - 19:05
fuente

1 respuesta

3

Hay muchas cosas mal aquí, pero para responder tu pregunta; no, no hay problema con llamar a serialize(); en los datos enviados por el usuario. El único problema es qué haces luego con la salida.

Su recopilación de entropía se reduce esencialmente a: microtime() , que le proporcionará aproximadamente 12 bits de entropía dado el ruido de latencia TCP típico a un servidor remoto, que no es mucho ...

Si usa $entropy para inicializar una clave de cifrado, esa clave será conocida por quien haya enviado la solicitud HTTP. Es posible que esto no sea un problema en su sistema, pero es algo que debe tener en cuenta.

En resumen; si envío una solicitud a la página anterior, podré predecir el valor de $entropy hasta aproximadamente 1 en 4000.

Usted está mucho mejor leyendo unos pocos bytes de un flujo de generación de entropía como /dev/urandom en sistemas Unix, o el crypto-api en sistemas Windows.

    
respondido por el lynks 30.04.2013 - 19:20
fuente

Lea otras preguntas en las etiquetas