SQL Injec. Security Story

Bilgisayarınızı Her Türlü Saldırıya Karşı Korumak İçin Yapmanız Gerekenler
Cevapla
megabros
Mesajlar: 0
Kayıt: Sal Şub 24, 2026 11:31 am
İletişim:

SQL Injec. Security Story

Mesaj gönderen megabros »

SQL, Structured Query Language anlamına gelir.. Yani Yapisal Sorgu Dil’i diye nitelendiririz..

SQL injection’ın tanımına değinelim..

SQL injection; SQL sorgusu ve komut gönderme yöntemidir..
80. porta gereksinim duyan ve sunucuda kurulan işletim sistemi yerine, sunucudaki sitelerin tabanlarına (ASP, PHP, CGI, vs) bağlı olan sorgu sistemidir.. Örnek verecek olursak; sisteme üye olan userların kullanıcı adları ve şifreleri veritabanına kaydolur.. SQL injection sayesinde SQL sorgulamalarla veritabanına kayıtlı user’ların account’larına erişim sağlayabiliriz..

ASP tabanlı scriptlerdeki SQL Injection bug’larından korunmaktan bahsedeceğim..

Örneğin; ASP tabanlı bir websitemiz olduğunu düşünerek, haber.asp adlı dosyamızın olduğunu varsayalım.. Haber.asp sayfasının detayı için açılan haber_detay.asp?id=1 şeklinde bir gidişat olsun.. Eğer vereceğim kodu; haber_detay.asp dosyasına eklemezseniz, hackerlar tarafından ’ karakteri ile mssql SQL sorgulamalarla, bulunan haberlere rahatlıkla erişebilirler..

Daha önce haber_detay.asp de bulunan kod “ID = REQUEST.QUERYSTRING(”ID”)” şeklinde ise;

ID = REQUEST.QUERYSTRING(”ID”)
IF Not IsNumeric(REQUEST.QUERYSTRING(”id”)) THEN
response.write “Lütfen Gecerli bir id numarası girin.”
response.end
END IF

bu kodlarla değişebilirsiniz..

Ayrı bir metod olarak kullanmış olduğumuz formlardan ötürü ’ karakterini nasıl etkisiz hale getireceğimizden bahsedeceğim..

Örnek olarak form’ları kaydetmek için bulunan form.register.asp dosyasındaki REQUEST.FORM kısmını bir üstte anlattığım gibi güvenli hale getirmeniz gerekir.. Yani vereceğim fonksiyon kodlarını, dosyada en üste koymanız kafii..

Function KarakterTemizle(Veri)
KarakterTemizle = Replace(Veri, “’”, “’’”)
Veri = KarakterTemizle
End Function

Bu fonksiyonu dosyaya yerleştirdikten sonra vereceğim örnekle yanlış ve doğru yolu ayırt edebileceksiniz..

Yanlış olan Hali: GelenVeri = REQUEST.FORM(”GelenVeri”)

Doğru hali: GelenVeri = KarakterTemizle(Request.Form(”GelenVeri”))

Bir başka adımla da yine bu form’lara etki eden kötü karakterleri engelleyeceğiz..

Yine üst kısımda bahsettiğim örnekteki gibi form’ları kaydeden form.register.asp dosyası içinde bulunan REQUEST.FORM kodlarını, vereceğim function’ı sayfanın en üstüne bırakarak güvenlik altına almanız gerekmektedir..

Function KarakterTemizle(Veri)
KarakterTemizle = Replace(Veri, “”)
Veri = KarakterTemizle
End Function

Bu fonksiyonu dosyaya yerleştirdikten sonra vereceğim örnekle yanlış ve doğru yolu ayırt edebileceksiniz..

Yanlış olan hali: GelenVeri = REQUEST.FORM(”GelenVeri”)

Doğru hali: GelenVeri = KarakterTemizle(Request.Form(”GelenVeri”))

Son olarak belirteceğim durum; gördüğünüz gibi bahsettiğim function’lar birbirine çok yakın.. Her iki function’da da ayrı ayrı incelemeniz açısından ayrı olarak verdim ki amaç; hatayı minimuma indirmek.. Her ikisini de birleştirecek olursak doğru hali şu function’lar olur;

Function KarakterTemizle(Veri)
KarakterTemizle = Replace(Veri, “’”, “’’”)
KarakterTemizle = Replace(Veri, “”)
Veri = KarakterTemizle
End Function

Son olarakta;

GelenVeri = KarakterTemizle(Request.Form(”GelenVeri”))

haline gelir..

Saygılar..
Cevapla

“Güvenlik / Security Makaleleri” sayfasına dön

Kimler çevrimiçi

Bu forumu görüntüleyen kullanıcılar: Hiç bir kayıtlı kullanıcı yok ve 1 misafir