2015-05-31 13 views
6

Ho uno strano problema relativo alla sicurezza, ultimamente mi sono stati errori regolari ma intermittenti durante il tentativo di inserire password hash in un campo di database di SQL Server che è nvarchar (130):Hashed password a volte più lunga di 128 caratteri

<cfqueryparam value="#hashpass#" cfsqltype="cf_sql_char" maxLength="130"> 

la variabile HashPass è impostata così:

<cfset hashpass = Hash(arguments.password & getsalt.user_salt, "SHA-512")> 

chiedi come sia possibile per un hash SHA-512 per essere più lungo di 128 caratteri, quando la documentazione dice che dovrebbe essere sempre 128 esattamente? Ecco l'errore di ColdFusion 10:

[Macromedia] [Driver JDBC SQLServer] [SQLServer] I dati stringa o binari sarebbero troncati.

+2

(Modifica) AFAIK, sì, dovrebbe generare un valore di 512 bit/128 caratteri codificati come esadecimale. Quali sono i valori effettivi quando si verifica l'errore? – Leigh

+0

Vorrei conoscere i valori effettivi che non riescono, quando ho provato a riprodurre l'errore il codice ha funzionato. Posso provare, prendere e mandare per email i valori che non funzionano, succede regolarmente solo non quando lo provo. –

+0

Nello spirito di try/catch, che cosa fa la funzione onErrror() del tuo Application.cfc? –

risposta

3

Sembra dal tuo errore che il problema sia a livello di database, dato che ColdFusion non sta fallendo il tuo controllo maxlength sul tag cfqueryparam e sta permettendo che la query sia eseguita. Ho appena provato cercando di far passare una stringa che supera la lunghezza specificata nell'attributo maxlength (su CF10) e ottenere l'errore:

The cause of this output exception was that: 
coldfusion.tagext.sql.QueryParamTag$InvalidDataException: 
Invalid data value this-is-a-string-that-is-too-long exceeds maxlength setting 10..` 

Come Adam Cameron accennato nei commenti alla domanda, sembra probabile che si tratta di un campo diverso nella query che sta generando l'errore.

Poiché la password con hash sarà lunga 128 caratteri, c'è un motivo per cui si stanno convalidando 130 caratteri?

+0

Grazie a tutti stavo prendendo quel numero di riga di errore troppo letteralmente ... molti dei dati per questo inserto provenivano da un'altra tabella con campi che in molti casi erano un po 'più lungo ... quindi, adeguando le dimensioni dei campi nella tabella di destinazione. –

Problemi correlati