İçeriğe geç

Zayıf Rastgelelik (ARCH5115)

Anahtar go.security.weak-random · Önem warning · Kategori security · CWE CWE-338

math/rand kriptografik değildir ve çıktısı tahmin edilebilir; token, anahtar, salt veya oturum kimliği gibi güvenlik değerleri için kullanılması saldırganların bunları öngörmesine olanak tanır.

func token() string {
b := make([]byte, 16)
for i := range b {
b[i] = byte(rand.Intn(256)) // math/rand
}
return hex.EncodeToString(b)
}
func token() (string, error) {
b := make([]byte, 16)
if _, err := rand.Read(b); err != nil { // crypto/rand
return "", err
}
return hex.EncodeToString(b), nil
}

Güvenlik açısından hassas tüm değerler için crypto/rand kullanın; math/rand yalnızca güvenlik dışı amaçlar içindir.