Quindi ho questa applicazione web in cui dovrei generare la mia chiave di sessione da utilizzare nel gestore di sessione. Ho solo poche domande sugli approcci sicuri a questo.
-
Credo che per rendere questo sicuro dovrebbe essere una chiave generata a caso ed è univoco in ogni istanza dei miei processi di app web. La mia ipotesi è corretta?
-
Uso Go 1.2 per la mia app Web e il modo in cui sto generando questa stringa casuale è utilizzando la seguente funzione:
func generateRandomSessionKey() string { rand.Seed(time.Now().UnixNano()) alpha := "abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789~!@#$%^&{}[]:,.*()_+-/?><." buf := make([]byte, KEYLENGTH) for i := 0; i < KEYLENGTH; i++ { buf[i] = alpha[rand.Intn(len(alpha))] } return string(buf) }
Questa funzione produce stringhe come: Hu@$pMaNZd.2)%Lpeet{6hYmKAxn:yYt
Ora so che alcuni potrebbero argomentare perché non utilizzare "crypto / rand" invece di "math / rand" che si è dimostrato più sicuro, ho provato e apparentemente le crypto / rand hanno generato stringhe non valide, ad es. \x16
che non può essere utilizzato dal framework web che sto usando ( Beego ). Quindi, quello che sto facendo qui è un approccio ragionevole e sicuro per generare questa chiave?