Generazione di token unici da chiave API?

6

Ho un sito web per il quale sto costruendo un modulo Drupal che consente agli utenti di quel sito Drupal di navigare sul mio sito web direttamente dal sito di Drupal.

Ho intenzione di distribuire chiavi API segrete a ciascuno degli amministratori del sito Drupal e devono inserire tale valore nella sua copia del modulo Drupal.

Quando questo sito Drupal presenta il mio modulo ai suoi utenti, facendo clic su determinati collegamenti dovrebbe portare l'utente al mio sito insieme a una serie di dati segreti che il mio sito può utilizzare per autenticare questa navigazione. Ci sarà un MODULO presentato all'utente e un link presente in modo che cliccando sul link si "invii" il modulo tramite POST e si reindirizzi anche l'utente.

Ho bisogno di usare questa "chiave-chiave" segreta per generare una sorta di codice tempo / tempo limitato che verrà dato al browser dell'utente. Qualsiasi utente intelligente che copi questo codice generato non dovrebbe essere in grado di riutilizzarlo per accedere successivamente al mio sito.

  1. Dovrei usare questa chiave API come password per crittografare alcuni dati che corrispondono al resto della richiesta POST? Quando lo ricevo, lo decrypt usando la mia copia della chiave API e se corrisponde al resto dei dati, lo considero convalidato?

  2. O dovrei fare una sorta di hashing a senso unico - md5?

  3. L'hash unidirezionale dovrebbe essere l'ora corrente e consentire l'accesso solo per 5-10 minuti?

(spostato da link )

    
posta siliconpi 07.04.2011 - 13:47
fonte

2 risposte

4

Innanzitutto non utilizzare mai MD5 per qualsiasi cosa relativa alla sicurezza. È un algoritmo molto rotto. Dovresti usare qualsiasi cosa della famiglia SHA2, SHA256 è un'ottima scelta. Un modo per realizzare questo tipo di autenticazione è con un HMAC La chiave API potrebbe fungere da chiave segreta K nel algoritmo. Il server con la chiave API segreta dovrebbe accettare il post e fornire il token di autenticazione. Il messaggio risultante dovrebbe avere un ID e il codice di autenticazione del messaggio per quella richiesta POST. L'ID potrebbe essere la chiave primaria per l'utente dell'API e il codice di autenticazione verrà generato dal server che utilizza questa API.

In questo caso Public Key Cryptography è eccessivo e un codice simmetrico ("encryption") non è utile affatto.

    
risposta data 10.04.2011 - 10:44
fonte
0

Ho implementato molto tempo fa un plugin OTP (one time password) per Joomla.

il codice sorgente è qui .

Quello che ho intenzione di fare è, all'interno di una sessione valida, ho generato OTP che autentica alcune azioni, per un tempo specifico. L'OTP verrebbe inviato da un canale out-of-band come, ad esempio, SMS. Sfortunatamente il progetto è morto, ma penso che questo codice possa essere in qualche modo utile per te.

    
risposta data 26.04.2011 - 16:30
fonte

Leggi altre domande sui tag