SORU
12 ŞUBAT 2009, PERŞEMBE


Nasıl parametre tabanlı SQL sorgu oluşturabilirim? Neden Kullanmalıyım?

"Herkes" parametre tabanlı SQL sorguları kullanıcı girişi her parça vailidate zorunda kalmadan SQL enjeksiyon saldırılarına karşı korumak için kullandığını duymuştum.

Bunu nasıl yaparsınız? Saklı yordamları kullanırken, bu otomatik olarak alıyor musunuz?

Benim anladığım bu olmayan parametreli.

cmdText = String.Format("SELECT foo FROM bar WHERE baz = '{0}'", fuz)

Bu parametreli?

cmdText = String.Format("EXEC foo_from_baz '{0}'", fuz)

Ya da SQL enjeksiyon kendimi korumak için böyle br seylerm daha kapsamlı yapmama gerek var mı?

With command
    .Parameters.Count = 1
    .Parameters.Item(0).ParameterName = "@baz"
    .Parameters.Item(0).Value = fuz
End With

Güvenlik konuları dışında parametreli sorgular kullanarak diğer avantajları vardır?

Güncelleme: Bu harika yazı Grotok ile soru referans olarak bağlandı. http://www.sommarskog.se/dynamic_sql.html

CEVAP
12 ŞUBAT 2009, PERŞEMBE


EXEC örnek parametreli OLMAZ. Parametre tabanlı sorgular (bazı çevrelerde hazırlanmış deyimleri) zarar neden böyle giriş önlemek gerekir:

';MASA bar; indir

Fuz değişkenini koymak (veya eğer bar masa eğer değer mi, değil) deneyin. Daha ince ve zarar sorgular da mümkündür.

İşte Sql Server ile parametreleri nasıl bir örnek:

Public Function GetBarFooByBaz(ByVal Baz As String) As String
    Dim sql As String = "SELECT foo FROM bar WHERE baz= @Baz"

    Using cn As New SqlConnection("Your connection string here"), _
        cmd As New SqlCommand(sql, cn)

        cmd.Parameters.Add("@Baz", SqlDbType.VarChar, 50).Value = Baz
        Return cmd.ExecuteScalar().ToString()
    End Using
End Function

Saklı yordamları bazen SQL enjeksiyon önlenmesi yatırılır. Ancak, çoğu zaman hala sorgu parametreleri veya yardım yok, onları kullanarak aramak zorunda. Eğer saklı yordamları kullanırsanızsadeceo zaman SEÇMEK için izinleri kapatabilirsiniz, ALTER, CREATE, DELETE, vb (her şeyi ama EXEC) uygulama kullanıcı hesabı için GÜNCELLEME ve bazı koruma böyle olur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Lamborghini

    Lamborghini

    13 Aralık 2005
  • Qmusic Romania

    Qmusic Roman

    8 Temmuz 2011
  • Techmoan

    Techmoan

    31 Mayıs 2009