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.
Hatalı
Bölüm başlığı “Hatalı”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}Düzeltme
Bölüm başlığı “Düzeltme”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.