Domanda

Ho bisogno di generare UUID per memorizzare alla fine in un database. Posso generare tesi UUID da JavaScript nel browser client ( ci sono alcuni esempi qui )?

C'è qualche rischio per la sicurezza di farlo in questo modo? Capisco che chiunque può modificare l'UUID prima che sia passato al server per la memorizzazione. Quindi avrò bisogno di verificare se sono trully unica prima di riporli nel database, ma a parte questo, c'è qualche altro alla cassa?

(Ci scusiamo per il mio inglese, sentitevi liberi di correggere eventuali errori di grammatica)

modifica Per rispondere a domande sul perché vorrei fare questo, è perché posso creare un nuovo oggetto ed è identificativo in Javascript e aggiungerlo al mio punto di vista e poi effettuare una chiamata AJAX per il server da aggiungere al database. In questo modo, non ho bisogno di caricare nuovamente dal database di sapere che cosa è il suo identificatore primario.

È stato utile?

Soluzione

Non proprio. Finché si tratta di un semplice identificatore e niente di più, e si sta in effetti si verifica che non validità e unicità, non è diverso da quello degli account utente con un id nell'URL, per esempio.

Guardate la vostra barra degli indirizzi. Scommetto 1.296.234 è la chiave primaria di questa domanda, ma non posso davvero fare nulla con queste informazioni. Stessa cosa con lo script.

Altri suggerimenti

Quali benefici si vede nella generazione di questi client-side? In tutta onestà, l'opzione migliore è quello di generare essa sul lato server, fuori gli utenti raggiungono. Non può dare risparmiare da eventuali seri problemi di sicurezza, ma sarà ridurre la convalida ridondante.

Sì. Il rischio non è specifico per UUID, qualsiasi client-side generato ID ha alcuni rischi, a seconda di ciò che si fa con l'ID. Il problema è che è molto difficile per autenticare il Javascript. Se si accetta ID generato dal cliente, si accetta qualsiasi ID dalle hacker.

I rischi possono includere,

  1. rubare Session. Se si utilizza l'ID per identificare la sessione, qualcuno potrebbe utilizzare un ID esistente come ID generato e il server può trattarla come una sessione esistente se la cura adeguata non sta prendendo.

  2. chiavi duplicate. La vera UUID è casuale, ma qualcuno in grado di generare chiavi duplicate che sarà rovinare il vostro database.

Si potrebbe trovare il modo di affrontare ognuno di questi attacchi, ma questo è protezione passiva. Si potrebbe annullare l'obiettivo originale di generare gli ID sul client, che è semplice.

C'è qualche motivo non si può avere il database generare (incremento) un ID?

Se, come dici tu, si dovrà verificare l'unicità del valore prima di inviarlo in ogni caso, perché non basta avere qualsiasi lingua backend si utilizza generarlo. Ciò renderebbe molto più opaco.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top