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

  • Fuse

    Fuse

    21 Kasım 2005
  • inovationgmbh

    inovationgmb

    28 EYLÜL 2010
  • Smith Micro Graphics

    Smith Micro

    15 Mayıs 2008