Un po 'di sfondo -È sicuro archiviare le password in chiaro in MySQL * temporaneamente *?
Gestisco un server di giochi che gira in Java e un forum che gira in PHP (phpbb). Ho collegato gli account del gioco e del forum, in modo tale che la modifica della password nel gioco cambi automaticamente la password per l'account del forum. I due sistemi usano diversi algoritmi di hashing della password, e ho bisogno di aggiornare l'hash della password sul lato del forum usando le funzioni built-in di phpbb, il che significa che devo chiamarli da uno script PHP (piuttosto che eseguire il mio codice).
Per fare questo, ho deciso di chiamare Java lo script PHP effettuando una richiesta HTTP allo script PHP ogni volta che è necessario modificare la password, per attivare uno script PHP che completa il processo di modifica della password per il account del forum. Tuttavia, non voglio mettere la password in chiaro in nessuna chiamata HTTP, poiché potrebbe apparire nei file di log e forse in altre aree sfruttabili. La mia idea attuale è che quando il lato Java sta cambiando le password, inserisce la nuova password in chiaro in una tabella di database e quindi fa una richiesta HTTP per attivare lo script PHP, in modo che nessun hash o informazione sensibile vada nella richiesta HTTP. La chiamata HTTP passerebbe solo il nome utente dell'account da modificare e un hash MD5 di un segreto condiviso più il nome utente, per l'autenticazione. Quando lo script PHP viene eseguito, recupera la nuova password in chiaro per l'utente dal database, la elimina immediatamente, quindi esegue la password in chiaro tramite l'algoritmo di hashing di phpbb e aggiorna il database del forum.
In condizioni normali, la password in chiaro dovrebbe essere nel database per meno di un secondo prima di essere eliminata. Idealmente, non lo memorizzerei da nessuna parte, ma non so in quale altro modo comunicare il cambiamento necessario da Java a PHP quando non posso prevedere quale sarà l'hash della password del forum, quindi devo in qualche modo inviare il password in chiaro allo script PHP che esegue l'hashing.
Qualche idea su un modo migliore per farlo, o c'è un feedback sulla memorizzazione della password in chiaro per un periodo di tempo molto breve? Considero il login MySQL sicuro e non condiviso con altre persone o progetti.
Grazie!
È possibile crittografarlo da Java appena prima di memorizzarlo nel DB e decodificarlo da PHP subito dopo averlo letto dal DB? – 0xFE
La crittografia è una buona idea, dal momento che apparentemente hai già un segreto condiviso. Che dire semplicemente inviando il nome utente e la password in testo in chiaro a PHP tramite HTTPS e POST, come i dati del modulo? – slashingweapon
Ancora meglio, crea un plugin di autenticazione personalizzato per PHP BB https://wiki.phpbb.com/Authentication_plugins Supporta schemi di autenticazione password personalizzati e dovrebbe consentire di sfruttare il Single Sign-On, se applicabile. –