PHP - Serializzazione degli input dell'utente

3

Il mio raccolta di entropia il sistema funziona serializzando gli input dell'utente:

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

viene eseguita solo la serializzazione. non viene eseguita la serializzazione.

qualcuno aveva detto:

your serializing user inputs your database is free lunch.

è vero?

ci sono problemi di sicurezza con la serializzazione degli input dell'utente?

    
posta H M 30.04.2013 - 19:05
fonte

1 risposta

3

Qui ci sono molte cose sbagliate, ma per rispondere alla tua domanda; no, non c'è alcun problema con la chiamata di serialize(); ai dati inviati dall'utente. L'unico problema è quello che fai con l'output.

Il tuo entropy gathering si riduce essenzialmente a: microtime() che ti darà circa 12 bit di entropia dato il tipico rumore di latenza TCP su un server remoto, che non è molto ...

Se si utilizza $entropy per eseguire il seeding di una chiave di crittografia, tale chiave sarà nota a chiunque abbia inviato la richiesta HTTP. Questo potrebbe non essere un problema nel tuo sistema, ma è qualcosa che dovresti sapere.

In breve; se invio una richiesta alla pagina sopra, potrò prevedere il valore di $entropy fino a circa 1 su 4000.

Sei molto meglio leggere pochi byte da un flusso di generazione entropico come /dev/urandom su sistemi unix o crypto-api su sistemi Windows.

    
risposta data 30.04.2013 - 19:20
fonte

Leggi altre domande sui tag