ASP ile Veritabanı Bağlantısı ve Güvenlik (SQL Injection)
ASP ile Veritabanı Bağlantısı (Access & SQL Server) ve Güvenli Kodlama
Klasik ASP projelerinin kalbi veritabanıdır. İster basit bir Access dosyası (MDB) olsun, ister profesyonel bir SQL Server; doğru bağlantı cümlesini (Connection String) kurmak bazen kafa karıştırıcı olabilir.
Bu rehberde, hem en sık kullanılan veritabanı bağlantı kodlarını paylaşıyor hem de eski ASP sitelerinin en büyük baş belası olan SQL Injection açığından nasıl korunacağınızı anlatıyorum.
1. MS Access Veritabanı Bağlantısı
Küçük ölçekli projeler için Access hala popülerdir. Hosting panelinizde “yazma izni” verilmiş bir klasörde (genellikle db klasörü) veritabanınızın olduğunu varsayalım.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<% Dim conn, strYol Set conn = Server.CreateObject("ADODB.Connection") ' Veritabanı dosyasının fiziksel yolunu bulalım strYol = Server.MapPath("/db/veritabani.mdb") ' Bağlantı Cümlesi (Provider) conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strYol ' Not: .accdb uzantılı yeni Access dosyaları için Provider=Microsoft.ACE.OLEDB.12.0 kullanılır. If conn.State = 1 Then Response.Write "Bağlantı Başarılı!" Else Response.Write "Bağlantı Hatası!" End If %> |
2. MS SQL Server Bağlantısı
Daha profesyonel projelerde SQL Server kullanılır. Burada sunucu IP adresi, kullanıcı adı ve şifreye ihtiyacınız vardır.
|
1 2 3 4 5 6 7 8 9 |
<% Dim conn, strBaglanti Set conn = Server.CreateObject("ADODB.Connection") ' IP, Veritabanı Adı, Kullanıcı Adı ve Şifreyi girin strBaglanti = "Provider=SQLOLEDB;Data Source=IP_ADRESI;Initial Catalog=VERITABANI_ADI;User Id=KULLANICI;Password=SIFRE;" conn.Open strBaglanti %> |
3. Hayati Uyarı: SQL Injection’dan Korunma
Eski usül kodlamada verileri doğrudan SQL sorgusuna yapıştırmak (Select * From Uyeler Where ID=" & Request("id")) sitenizi hacklenmeye açık hale getirir.
Bunun yerine Parameters yapısını kullanmalısınız:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<% Dim cmd, rs, gelenID gelenID = Request.QueryString("id") Set cmd = Server.CreateObject("ADODB.Command") Set cmd.ActiveConnection = conn cmd.CommandText = "SELECT * FROM Uyeler WHERE UyeID = ?" cmd.Parameters.Append cmd.CreateParameter("@id", 3, 1, , gelenID) ' 3=Integer Set rs = cmd.Execute If Not rs.EOF Then Response.Write "Üye Adı: " & rs("AdSoyad") End If %> |
Bu yöntem, dışarıdan gelen zararlı kodları etkisiz hale getirir ve sitenizi güvene alır.