SQL Enjeksiyonu Nedir?

click fraud protection

Web güvenlik açıklarının en büyük sınıflarından biri “SQL Injection” veya SQLi olarak bilinir. SQL olarak da bilinen Yapılandırılmış Sorgu Dili, Veritabanına bağlı olarak dilin bir dizi varyantı kullanılmasına rağmen, veritabanlarının çoğuyla etkileşim kurmak için kullanılan dil platform. Hesap bilgileri gibi kullanıcı verilerini depolayan veya resim barındırma web sitesi gibi kullanıcı yükleme işlevselliği sağlayan herhangi bir web sitesi, bu verileri depolamak için bir veritabanı kullanacaktır.

İpucu: SQL genellikle ya “ess ​​cue ell” ya da “sequel” olarak telaffuz edilir, ilk seçenek İngiliz İngilizcesinde daha yaygın ve ikinci seçenek Amerikan İngilizcesinde daha yaygındır. Her iki telaffuz da genellikle veritabanları hakkında konuşma bağlamında anlaşılır.

SQLi nedir?

SQLi, aralarında iletişim kuran kodu tasarlayan web geliştiricilerinin kullandığı bir güvenlik açığıdır. web sunucusu ve veritabanı, bir sunucu tarafından gönderilen SQL komutlarına karşı koruma uygulamaz. kullanıcı. Sorun, veritabanı ifadelerinden kaçmanın ve yeni argümanlar veya tamamen yeni bir ifade eklemenin mümkün olmasıdır. Değiştirilen veya ikinci veritabanı ifadesi, potansiyel olarak büyük ölçekli silmeler veya veri sızıntıları dahil olmak üzere bir dizi eylemi gerçekleştirebilir.

İstismarlar tipik olarak, mevcut ifadelerin her koşulda doğru olmasını sağlamak veya tüm verileri silmek veya görüntülemek gibi belirli bir eylemi gerçekleştiren ikinci bir toplu komut sağlamak etrafında döner. Örneğin, bir web sitesinde oturum açmak için bir SQL ifadesi, gönderilen kullanıcı adı ve parolanın veritabanındaki bir girişle eşleşip eşleşmediğini kontrol edebilir. Bir SQL enjeksiyon istismarına erişmeye çalışmak için "veya 1=1" gibi bir "veya doğru" yan tümcesi eklemeyi deneyebilir. Bu, komutu “parola [bu] ise veya bu ifade doğruysa [bu] kullanıcı adıyla oturum açın” satırları boyunca yapar.

SQLi nasıl önlenir

SQLi, web sitelerinin veritabanlarını ihlal etmesinin ve ardından çevrimiçi sızdırmasının çok yaygın bir yoluydu. Güvenlik bilincinin geliştirici eğitiminin bir parçası olmasını sağlamaya yönelik ortak bir çaba nedeniyle, bu güvenlik açığı sınıfı büyük ölçüde çözüldü ve artık nadiren görülüyor.

SQLi'yi önlemenin doğru yöntemi, parametreli sorgular olarak da bilinen hazırlanmış ifadeleri kullanmaktır. Geleneksel olarak, SQL ifadeleri bildirilir ve bu bildirim sırasında kullanıcı girdisinin bunlara birleştirilmesi sağlanır. Hazırlanan ifadelerle, veritabanı komutu yazılır ve ardından ayrı bir işlev komutu çalıştırır ve kullanıcı verilerini ekler. Bu küçük bir fark gibi görünse de, komutun nasıl işlendiğini tamamen değiştirir. Aradaki fark, anlamlı SQL komutlarının çalıştırılmasını engeller ve tüm kullanıcı girdilerini bir dize olarak ele alarak SQL enjeksiyonunun gerçekleşmesini engeller.