Quanto dovrebbe durare un link condiviso (token nell'URL)?

0

Supponiamo di avere un servizio web come:

GetComments(encryptedDiscussionID) // returns list of comments

Dove encryptedDiscussionID è la versione crittografata dell'ID discussione reale nel database. La crittografia viene eseguita sul server utilizzando una chiave privata per il server.

Al client è già stato inviato il encryptedDiscussionID .

La mia domanda è: quanto "lungo" dovrebbe essere encryptedDiscussionID , per assicurarti che sia sicuro / non indovinato?

    
posta GarethOwen 09.12.2015 - 11:41
fonte

1 risposta

2

Dipende da quante supposizioni permetterete e quale può essere la possibilità che qualcuno riesca a indovinare un valido URL crittografato. Inoltre devi tenere conto di quanti di questi ID discussione avrai.

Se hai 1000 di questi ID e hai 10 000 possibili ID di discussione, saranno necessari solo 10 tentativi per indovinare tale ID.

Se utilizzi i caratteri alfanumerici crittografati, la quantità di ID possibili è pari a 26 ^ lunghezza.

Quindi se prendi ID discussione con una lunghezza di 10 caratteri avrai 1,41 * 10 ^ 12 possibili ID. Se hai 1000 ID validi nel tuo database allora ci vorranno in media 1,41 * 10 ^ 9 tentativi di indovinare un ID valido. Immagino che saresti in grado di rilevare una tale quantità di tentativi. Ma dal momento che aggiungere caratteri extra al encryptedDiscussionID lo renderei ancora più lungo.

Se puoi fornire ulteriori dettagli è possibile fornire un anwser più dettagliato.

Come stai facendo la ricerca sul lato server di questi ID crittografati. Suppongo che non li calcoli ogni volta che qualcuno invia una richiesta? Li metti anche tu?

Non dimenticare che se qualcuno può vedere (- > attaccante di rete passivo, sniffare) questi ID crittografati sulla rete, sarà comunque in grado di visualizzare l'elenco dei commenti.

    
risposta data 09.12.2015 - 11:59
fonte

Leggi altre domande sui tag