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

  • Adam Outler

    Adam Outler

    19 EKİM 2006
  • KarnasCamillo

    KarnasCamill

    24 EKİM 2007
  • RyanXLT

    RyanXLT

    22 Ocak 2011