Codifica di una chiave primaria del database quando viene inviata al browser

3

Quando si ha a che fare con un'applicazione basata su oData (ADO.NET Data Services), o qualcosa che altrimenti pubblica PrimaryKey, o ForeignKey sul client ...

Qualcuno può spiegarmi che i benefici di crittografare la chiave del database quando arrivano al browser?

Come crittografare questa chiave? Quali metodologie utilizzeresti per la convalida?

Idealmente questa risposta sarebbe formulata in modo tale da vendere un PM o un dirigente sui vantaggi / svantaggi di questa pratica.

Ulteriori informazioni

Se non hai familiarità con la programmazione web, quello di cui sto parlando è la chiave primaria spesso nascosta che viene inviata al client (browser web, fat client o altro) e decrittografata all'estremità remota del tunnel HTTPS. L'argomento è che è più sicuro crittografare e offuscare la chiave primaria (o fk per quella materia) quando viene inviata al client.

Aggiorna

Sebbene non abbia mai trovato alcuna ricerca formale, ho fatto un sito Web di proof-of-concept che si applica a siti multi-tenant o dove non c'è abbastanza convalida lato server della riga di destinazione . Sono sicuro che questo è un problema di sicurezza, ma potrebbe essere troppo programmatico per questo forum sulla sicurezza IT ...

    
posta random65537 20.11.2010 - 16:31
fonte

2 risposte

6

Sono d'accordo con ciò che sta dicendo AviD nei commenti.

Alla domanda originale, non penso che ci siano benefici nella crittografia dei valori chiave che vengono esposti dall'applicazione. Per me, sembra una strana (e costosa, da una prospettiva perf) una forma di sicurezza dall'oscurità.

La sicurezza e l'integrità dei dati non segreti dovrebbero essere fornite dalla solida logica dell'applicazione. I.E., l'utente corrente ha il permesso di modificare i dati che stanno provando a cambiare? Oppure, l'utente corrente ha il permesso di aggiungere uno studente a questa classe e la classe è ancora aperta per la registrazione?

Le chiavi di crittografia non risolvono questi problemi, ma in realtà possono causare ulteriori problemi, ad esempio, se un collegamento con un parametro crittografato valido viene inviato via email a qualcuno che non dovrebbe accedervi?

Per l'altro esempio, la reimpostazione della password inviata via email, sto cercando di capire perché la chiave crittografata avrebbe vantaggi significativi rispetto a un GUID che non verranno compensati dall'impatto sulle prestazioni delle operazioni di crittografia e decrittografia.

Ovviamente i miei due centesimi, ma in realtà non vedo molto, se non del vantaggio di sicurezza. Penso che sia solo un costo aggiuntivo senza reali benefici perché la maggior parte, se non tutti i problemi di sicurezza sottostanti rimarranno e dovranno essere risolti in un altro modo, a prescindere.

Spero che questo aiuti,

-Xander

    
risposta data 23.11.2010 - 17:54
fonte
1

Ecco uno scenario.

Fred vuole hackerare l'account di Barney su MyFaceIt. Richiede una reimpostazione della password per il proprio account e riceve un'e-mail con un collegamento. link

Quindi richiede una reimpostazione della password per l'account di Barney. Non vedrà l'email, ma può indovinare che il resetid sarà 1235 o 1236 o lì vicino.

In questa situazione, è possibile utilizzare un GUID anziché una chiave generata sequenzialmente per il resetid. Ma ci sono degli svantaggi ai GUID (dimensione, distribuzione dell'indice ...), quindi potresti usare un normale ID sequenziale e un hash / crittografare il valore. In questo modo il tuo link diventa link Potrebbe anche essere link

Questo rende molto più difficile per Fred indovinare il link di reset per l'account di Barney.

    
risposta data 23.11.2010 - 01:08
fonte

Leggi altre domande sui tag