Sql injection (ARCH302)
Anahtar dotnet.security.sql-injection · Önem error · Kategori security · CWE CWE-89
Kullanıcı girdisinin SQL metnine doğrudan birleştirilmesi saldırganın sorguyu değiştirmesine olanak tanır. Parametreler girdiyi koddan ayırır.
Hatalı
Bölüm başlığı “Hatalı”var cmd = new SqlCommand( "SELECT * FROM Users WHERE Name = '" + name + "'", conn);var reader = cmd.ExecuteReader();var cmd = new SqlCommand( "SELECT * FROM Users WHERE Name = @name", conn);cmd.Parameters.AddWithValue("@name", name);var reader = cmd.ExecuteReader();Düzeltme
Bölüm başlığı “Düzeltme”Tüm değişken girdiler için parametreli komutlar veya bir ORM kullanın; dize birleştirme ya da interpolasyonla SQL oluşturmayın.