Secure ID nel browser [chiuso]

2

Spesso abbiamo bisogno di inviare id di entità sul lato client.

Come possiamo proteggere questi dati (in particolare gli ID)?

Anche se crittografiamo la stessa chiave ogni volta, può essere identificata tramite l'analisi.

Ad esempio, se criptò id "1" per dire "ae!" (usando qualsiasi algoritmo), lo stesso id può essere usato anche in seguito.

Quindi dovremmo usare l'ID di sessione come chiave per inviare i dati al lato client (questo convaliderà solo la sessione up-to dei dati è attiva)? Oppure potremmo aggiungere casualmente una stringa all'id "1", crittografarla e quindi inviarla al client (anche questa può essere inviata la prossima volta)?

O esiste un altro modo?

Che cosa è meglio fare per questo tipo di sicurezza?

Sto usando .Net MVC C #. Ma penso che la domanda sia irrilevante per la piattaforma.

Facciamo un esempio.

Nel seguente link id è indicato in datasource, che è testo semplice, quindi chiunque abbia conoscenze tecniche può modificarlo (usando la console di sviluppo del browser).

Quindi IMHO dovrebbe essere crittografato, per renderlo immutabile (perché il valore modificato non è accettabile a causa della crittografia).

link

    
posta Anonymous Creator 26.05.2018 - 21:26
fonte

1 risposta

0

Puoi usare un hash degli id. Ad esempio, in pseudo-codice,

sha2(entry_id || delimiter || user_id)

farà quello che vuoi:

  • tutti gli utenti vedranno lo stesso contenuto sullo stesso id,
  • non gli utenti, nemmeno potenzialmente cooperando con utenti diversi saranno in grado di identificare le entità con i loro hash.
  • tuttavia, tutti gli utenti vedranno la stessa entità dietro lo stesso hash.

Lo svantaggio del metodo è che hai bisogno di una memoria di back-end per le chiavi di hash per utente - gli utenti faranno riferimento alle entità solo tramite il loro hash, e nemmeno tu sarai in grado di decodificare l'entità da esse.

Potresti aumentare la sicurezza legando l'hash alla sessione anziché all'utente:

sha2(entry_id || delimiter || session_id)

Ciò aumenterà la sicurezza (nemmeno l'utente sarà in grado di identificare le entità tra le loro sessioni) e sarà necessario memorizzare gli hash solo fino al timeout della sessione. Tuttavia, l'utente non sarà in grado di produrre un'archiviazione dell'entità lato client (ciò potrebbe anche essere un vantaggio).

    
risposta data 28.05.2018 - 00:13
fonte

Leggi altre domande sui tag