11. SınıfBilişim Teknolojileri

Web Güvenliği ve SQL Enjeksiyonu

Bilişim Teknolojileri · 11. Sınıf · JavaScript ve DOM

Konu Anlatımı

Web Güvenliği Neden Temel Konudur?

Bir web uygulaması, kullanıcının tarayıcısı ile sunucu arasında sürekli veri alışverişi yapar. Bu alışverişin iki tarafı da güvenilmez sayılabilir; kullanıcının tarayıcısındaki sayfa içeriği değiştirilmiş olabilir, gelen istek de elde geçirilmiş olabilir. Bu nedenle güvenlik, dışarıdan gelen her değerin doğrulanması ve her işlemin yetkilendirilmesi ilkesine dayanır.

Güvenlik açıklarının çoğu, veriyi doğrulamanın yerine güvenme hatasından kaynaklanır. Uygulama kullanıcının ne gönderdiğini denetlemez, veriyi olduğu gibi sorguya ya da sayfaya aktarır. Saldırgan da tam olarak bu açığı kullanır.

Sorguya Gömülen Girdi ve SQL Enjeksiyonu

Kullanıcıdan gelen bir metin, veri tabanı komutuna doğrudan eklenirse saldırgan komutun yapısını değiştirebilir. Buna sorgu enjeksiyonu denir. Saldırgan, aranan koşulun yerine kendi koşulunu yazarak tüm tabloyu okuyabilir, veri silebilir ya da yetkisi dışında kayıt ekleyebilir.

Çözüm hazırlanmış sorgu kullanmaktır. Hazırlanmış sorguda komutun yapısı ile veri ayrı gönderilir; veri bir değer olarak işlenir, komut parçası olarak yorumlanmaz. Girdi türü ve biçimi yine de doğrulanmalıdır, ancak değer doğrulaması tek başına yeterli bir güvenlik önlemi değildir. Sıralama ve tablo adı gibi yapısal bölümler izinli listeden seçilmelidir.

Betik Enjeksiyonu ve Sahte İstek Saldırısı

Betik enjeksiyonu, kullanıcı girdisinin tarayıcıda sayfa içeriği olarak yorumlanmasıyla gerçekleşir. Zararlı betik, kurbanın oturumuyla çalışır ve form verisi çalınabilir. Önlem olarak veri ekrana yazılırken kaçış işlemi uygulanır, kullanıcı girdisi hiçbir zaman doğrudan biçimlendirme olarak kullanılmaz. Güvenliği sağlayan tek bir yöntem değil, verinin tüm noktalarda doğru şekilde kodlanmasıdır.

Sahte istek saldırısı ise kurbanın tarayıcısı, kurbanın niyeti olmadan kimliğiyle bir istek gönderir. Kullanıcının gönderdiği formlara gizli ve tahmin edilemeyen bir jeton eklenerek bu istekler ayırt edilir. Oturum çerezine yalnızca yazma ve aynı site kısıtı gibi bayraklar eklemek de önlem olarak kullanılır.

Aktarım Güvenliği, Parola Saklama ve Anahtarlar

Parolalar düz metin olarak saklanırsa veritabanına erişen biri tüm hesapları ele geçirir. Bu nedenle parolalar tek yönlü bir karma işlemiyle saklanır ve karşılaştırma, kullanıcının girdisi aynı işlemden geçirilerek yapılır. Karma işlemi ile her hesap için farklı bir tuz birleştirilir; tuz veritabanında saklansa bile aynı parolanın farklı hesaplardaki karmaları farklı olur, bu da toplu çözümlemeyi zorlaştırır.

Aktarım sırasında bağlantının şifrelenmesi, aradaki ağdan verinin okunmasını engeller. Erişim anahtarları ve veri tabanı parolaları kaynak koda yazılmaz, ortam ayarlarından veya ayrı bir anahtar yönetiminden alınır. Anahtar değişimlerinin kaydı tutulur ve eski anahtarların kullanımı durdurulur.

Erişim Denetimi ve En Az Yetki

En az yetki ilkesi, her kullanıcıya veya servise yalnızca görevini yapabilmesi için gereken en küçük yetkiyi vermektir. Bir öğrenci yalnızca kendi kayıtlarını görmeli, bir öğretmen yalnızca kendi sınıfını görmelidir. Yetkiler tek tek denetlenmeli, gizli bir bağlantı ya da tahmin edilen bir adresle erişim sağlanmamalıdır.

Güvenlik önlemleri tek tek zayıf olabilir; bu nedenle katmanlı bir yapı kurulur. Girdi doğrulama, hazırlanmış sorgu, en az yetki, şifreli aktarım, sınırlı deneme, hata günlüğü ve düzenli yama birlikte çalışır. Önlemlerden biri atlandığında diğerleri riski azaltır ama tamamen ortadan kaldırmaz.

Ne Öğreneceğiz

Girdi doğrulama, hazırlanmış sorgular, betik enjeksiyonu, sahte istek ve parola güvenliği tekniklerini uygulayarak web uygulamalarındaki riskleri azaltır. Bu konuda ögrenme çıktıları:

Ön Bilgi

Bu konuya başlamadan önce temel kavram ve ön koşulları kavramanız yardımcı olacaktır. Konunun çerçevesinde şu kavramlar dikkat ister:

Basit Örnek ve Günlük Yaşam

Günlük yaşamda ve mesleki bağlamda bir uygulama:

Soru: Ad ve soyad alanları sorguya değer birleştirme ile ekleniyor. Kullanıcı arama kutusuna tırnak işareti yazarak sorgu yapısını bozabiliyor.

  1. Girdinin hangi değer olarak ayrılacağını belirle.
  2. Komut yapısını sabitle, veriyi ayrı gönder.
  3. Girdi biçimini ve uzunluğunu yine de doğrula.
  4. Hatalı girdi kaydını güvenlik günlüğüne yaz.

Sonuç/cevap: Sorgu hazırlanır, komut yapısı veri alındıktan sonra kesinleşir ve değerler ayrı parametre olarak gönderilir. Böylece tırnak işareti bir komut başlatmaz, yalnızca bir metin karakteri olarak işlenir.

İleri Örnek

Daha ileri bir uygulama:

Soru: Kullanıcı girdisi içeren 15 sorgudan 3'ünde hazırlanmış sorgu yerine değer birleştirme kullanılmıştır.

  1. Güvensiz sorgu sayısını belirle.
  2. Toplam sorgu sayısına böl.
  3. Sonucu yüzde olarak ifade et.

Sonuç/cevap: 3 / 15 = 0,2 çıkar, yani sorguların yüzde 20'si güvenlik açığı taşımaktadır. Her biri hazırlanmış sorguya dönüştürülüp dönüşüm sonrası sınama ile doğrulanmalıdır.

Adım Adım Çözülmüş Örnek

Hazırlanmış sorguya dönüştürme konusunun adımları:

  1. Girdinin hangi değer olarak ayrılacağını belirle.
  2. Komut yapısını sabitle, veriyi ayrı gönder.
  3. Girdi biçimini ve uzunluğunu yine de doğrula.
  4. Hatalı girdi kaydını güvenlik günlüğüne yaz.

Karşılaştırma Tablosu

KavramAçıklama
Değer doğrulaması tek başına yeterli değDeğer doğrulaması tek başına yeterli değildir; sorgu yapısı ile veri ayrılmalıdır.
Hazırlanmış sorguda veri komut parçası oHazırlanmış sorguda veri komut parçası olarak yorumlanmaz.
Tarayıcıya gönderilen her veri, çıktı baTarayıcıya gönderilen her veri, çıktı bağlamına göre kaçış işleminden geçirilmelidir.
Sahte istek saldırısına karşı formlara tSahte istek saldırısına karşı formlara tahmin edilemeyen jeton eklenmelidir.
Parola düz metin saklanmaz; tek yönlü kaParola düz metin saklanmaz; tek yönlü karma ve hesaba özel tuz kullanılır.
Arayüzde gizlenen düğme veya bağlantı güArayüzde gizlenen düğme veya bağlantı güvenlik önlemi değildir.
Hata ayrıntıları kullanıcıya gösterilmezHata ayrıntıları kullanıcıya gösterilmez, sunucu günlüğüne yazılır.

Sık Yapılan Hatalar

Yalnızca uzunluk kontrolü yapmak: Uzunluğu doğru gelen bir metin yine komut yapısını bozabilir; doğrulama yapısal ayrımın yerini tutmaz, sorgu hazırlanmalıdır.

Girdiyi kaçırmak yerine silmek: Değerlerin tümünü reddetmek yerine tasarıma uygun hata mesajı gösterilmeli, kayıp veri önlenmelidir.

Hata ayrıntısını kullanıcıya göstermek: Veri tabanı yapısını ya da dosya yolunu açığa çıkaran hata mesajı saldırıya yol haritası verir.

Arayüzde gizlemeyi güvenlik saymak: Butonu gizlemek erişimi engellemez; her istek sunucu tarafında yetkiye göre yeniden değerlendirilmelidir.

Tuzu gizli tutmaya çalışmak: Tuzun gizlenmesi gerekmez, gizliliği değil benzersizliği sağlar; yanlış saklama yöntemi güvenliği bozar.

Özet

Web güvenliği, dışarıdan gelen her verinin doğrulanması ve her işlemin yetkilendirilmesiyle sağlanır. Sorguya gömülen kullanıcı girdisi komut yapısını değiştirip tüm veriyi ele geçirebileceğinden hazırlanmış sorgu kullanılmalı, veri yapıdan ayrılmalıdır. Betik enjeksiyonunda çıktı bağlamına göre kaçış işlemi uygulanır, sahte istek saldırısında formlara tahmin edilemeyen jeton eklenir ve çerez bayrakları kullanılır. Parolalar düz metin saklanmaz, tek yönlü karma ile hesaba özel tuz kullanılarak saklanır. Sayısal değerlerle ölçüm yapılabilir: 8 karakterlik ve 62 karakterlik kümede bilgi miktarı 8 × log2(62) = 47,6 bit bulunur, 6,4 milyar parolalık uzayda saniyede 500 denemeyle ortalama süre 6400000000 / 500 = 12800000 saniye, yani 3555,6 saattir. 12 denemelik sınır 10000 olası parolada yalnızca 12 / 10000 = 0,0012 yani yüzde 0,12 oranında koruma sağlar; bu yüzden sınır, gecikme ve en az yetki birlikte kullanılmalıdır.

Kendini Dene

Soru: Yönerge: Bir öğrenci kayıt sisteminde kullanıcı adı ve parola ile giriş yapılıyor. (I) sorgu enjeksiyonuna karşı alınacak önlemleri, (II) parola saklamada kullanılacak yöntemi, (III) giriş formunda deneme saldırılarına karşı uygulanacak önlemleri, (IV) her önlemin hangi saldırıyı engellediğini madde madde açıkla.

Örnek cevap: Puanlama anahtarı: Sorgu enjeksiyonu önlemlerinin sayılması 6 puan; parola saklama yönteminin doğru anlatılması 6 puan; deneme saldırısına karşı en az üç önlemin yazılması 7 puan; önlemlerin saldırı türleriyle eşleştirilmesi 6 puan. Toplam 25 puan. Model cevap: Tüm sorgular hazırlanmış sorguya dönüştürülür, yapısal bölümler izinli listeden seçilir ve girişler biçim ve uzunluk açısından doğrulanır. Parolalar tek yönlü karma ile hesaba özel tuz eklenerek saklanır, karşılaştırma aynı işlemden geçirilerek yapılır. Giriş formunda deneme sınırı, başarısız denemelerde gecikme, çok sayıda hatalı deneme sonrası hesabı geçici olarak kilitleme ve güvenlik uyarısı uygulanır. Böylece komut yapısı değiştirilemez, parolalar ele geçse bile okunamaz ve otomatik denemeler yavaşlatılır.

Web Güvenliği ve SQL Enjeksiyonu — Sık Sorulan Sorular

Web Güvenliği Neden Temel Konudur?

Bir web uygulaması, kullanıcının tarayıcısı ile sunucu arasında sürekli veri alışverişi yapar. Bu alışverişin iki tarafı da güvenilmez sayılabilir; kullanıcının tarayıcısındaki sayfa içeriği değiştirilmiş olabilir, gelen istek de elde geçirilmiş olabilir. Bu nedenle güvenlik, dışarıdan gelen her değerin doğrulanması…

Web Güvenliği ve SQL Enjeksiyonu nedir?

Bir web uygulaması, kullanıcının tarayıcısı ile sunucu arasında sürekli veri alışverişi yapar. Bu alışverişin iki tarafı da güvenilmez sayılabilir; kullanıcının tarayıcısındaki sayfa içeriği değiştirilmiş olabilir, gelen istek de elde geçirilmiş olabilir. Bu nedenle güvenlik, dışarıdan gelen her değerin doğrulanması…

Web Güvenliği ve SQL Enjeksiyonu konusunda ne öğrenilir?

Değer doğrulaması tek başına yeterli değildir; sorgu yapısı ile veri ayrılmalıdır.

Web Güvenliği ve SQL Enjeksiyonu konusunda sık yapılan hatalar nelerdir?

Yalnızca uzunluk kontrolü yapmak: Uzunluğu doğru gelen bir metin yine komut yapısını bozabilir; doğrulama yapısal ayrımın yerini tutmaz, sorgu hazırlanmalıdır. Girdiyi kaçırmak yerine silmek: Değerlerin tümünü reddetmek yerine tasarıma uygun hata mesajı gösterilmeli, kayıp veri önlenmelidir.

Web Güvenliği ve SQL Enjeksiyonu için hangi formüller ve kurallar kullanılır?

Parola uzayı = kullanılan karakter sayısı ^ parola uzunluğu · Parola bilgi miktarı (bit) = parola uzunluğu × log2(karakter sayısı) · Ortalama kaba kuvvet süresi = olası parola sayısı / saniyedeki deneme sayısı · Saldırı başarı olasılığı = denenen deneme sayısı / olası parola sayısı

Web Güvenliği ve SQL Enjeksiyonu Kazanımları

Örnek Sorular ve Çözümleri

Örnek Soru 1 kolay

Kullanıcıdan gelen metin doğrudan veri tabanı komutuna eklenerek saldırganın komut yapısını değiştirmesine ne denir?

  1. A) Sorgu enjeksiyonu
  2. B) Çapraz site betik enjeksiyonu
  3. C) Hizmet engelleme saldırısı
  4. D) Oturum çalma
Cevabı göster

Doğru cevap: A) Sorgu enjeksiyonu

Kullanıcı girdisinin komut metnine gömülmesi, saldırganın koşul veya komut parçası yazmasına yol açar. Böylece yetkisiz veri okunabilir, silinebilir veya değiştirilebilir; buna sorgu enjeksiyonu denir.

Örnek Soru 2 orta

Bir yorum formunda kullanıcı adı doğrudan sayfaya yazılıyor ve bu alanın güvenlik önlemi yok. Hangi düzeltme gereklidir?

  1. A) Yorumları yalnızca yöneticilerin görmesini sağlamak
  2. B) Formu yalnızca masaüstü bilgisayarlarda açmak
  3. C) Sayfayı her dakika yenilemek
  4. D) Girdiyi kaydetmeden önce çıktı bağlamına göre kaçış işleminden geçirmek
Cevabı göster

Doğru cevap: D) Girdiyi kaydetmeden önce çıktı bağlamına göre kaçış işleminden geçirmek

Girdiyi kaydetmeden önce kavramı Web Güvenliği ve SQL Enjeksiyonu konusunun temel bir kavramıdır. Detaylar konu anlatımında verilmiştir.

Örnek Soru 3 zor

8 karakterden oluşan ve 62 karakterlik kümeden seçilen bir parola yaklaşık kaç bit bilgi taşır?

  1. A) 40,0 bit
  2. B) 56,0 bit
  3. C) 47,6 bit
  4. D) 35,5 bit
Cevabı göster

Doğru cevap: C) 47,6 bit

Bir karakter log2(62) yaklaşık 5,95 bit bilgi taşır. Bu değer parola uzunluğuyla çarpılırsa 8 × 5,95 = 47,6 bit sonucu bulunur.

Sıradaki adım

Konu anlatımları hesapsız okunur. Quiz, slayt ve deneme için hesap gerekir.

DersTeders ile devam et

Bilişim Teknolojileri için çalışma yolu

  1. OkuKonu anlatımını bu sayfada bitir.
  2. Soru çözÖrnekleri çöz, cevabı açıklamayla karşılaştır.
  3. Quiz ile pekiştirHesapla kendini ölç.

Slaytla adım adım öğren · Tüm dersler · Ana sayfa

Hesap açTüm dersleri keşfet

Konu anlatımları hesapsız okunur; quiz, slayt ve deneme için hesap gerekir.

Bu sayfa Web Güvenliği ve SQL Enjeksiyonu konusunun anlatımını, kazanımlarını ve örnek sorularını içerir. Konuyla ilgili tüm sorular için testi çöz, diğer konular için DersTeders ana sayfasına geçebilirsin.

Bu konunun öğretmen materyallerini (ders planı, çalışma kâğıdı, çözümlü soru bankası, rubrik) yazdırabilirsin: Yazıcı çıktısı modülünü aç