MariaDB - SQL Enjeksiyon Koruması

Kullanıcı girdisini kabul etmenin basit eylemi, istismarlara kapı açar. Sorun öncelikle verilerin mantıksal yönetiminden kaynaklanıyor, ancak neyse ki, bu büyük kusurlardan kaçınmak oldukça kolaydır.

SQL ekleme fırsatları, genellikle kullanıcıların bir ad gibi verileri girmesi ve kod mantığının bu girdiyi analiz edememesi durumunda ortaya çıkar. Kod, bunun yerine, bir saldırganın veritabanında çalışacak bir MariaDB ifadesi eklemesine izin verir.

Kullanıcılar tarafından girilen, şüpheli ve herhangi bir işlemden önce güçlü bir doğrulamaya ihtiyaç duyan verileri her zaman dikkate alın. Bu doğrulamayı model eşleştirme yoluyla gerçekleştirin. Örneğin, beklenen girdi bir kullanıcı adı ise, girilen karakterleri alfasayısal karakterlerle ve alt çizgilerle ve belirli bir uzunlukla sınırlayın. Aşağıda verilen bir örneği inceleyin -

if(check_match("/^\w{8,20}$/", $_GET['user_name'], $matches)) {
   $result = mysql_query("SELECT * FROM system_users WHERE user_name = $matches[0]");
} else {
   echo "Invalid username";
}

Ayrıca, girdi kısıtlamaları oluştururken REGEXP işlecini ve LIKE yan tümcelerini kullanın.

Aşağıdakiler gibi, gerekli her türlü açık girdi kontrolünü göz önünde bulundurun:

  • Kullanılan kaçış karakterlerini kontrol edin.

  • Giriş için belirli uygun veri türlerini kontrol edin. Girişi gerekli veri türü ve boyutuyla sınırlayın.

  • Girilen verilerin sözdizimini kontrol edin. Gerekli modelin dışında hiçbir şeye izin vermeyin.

  • İzin verilen şartları kontrol edin. Kara listeye SQL anahtar sözcükleri.

Enjeksiyon saldırılarının tehlikelerini bilmiyor olabilirsiniz veya bunların önemsiz olduğunu düşünebilirsiniz, ancak güvenlik kaygıları listesinin başında gelirler. Ayrıca, bu iki girişin etkisini düşünün -

1=1
-or-
*

Doğru komutla birlikte bunlardan herhangi birinin girilmesine izin veren kod, veri tabanındaki tüm kullanıcı verilerinin açığa çıkmasına veya veri tabanındaki tüm verilerin silinmesine neden olabilir ve hiçbir enjeksiyon özellikle akıllıca değildir. Bazı durumlarda, saldırganlar boşlukları incelemek için zaman bile harcamıyorlar; basit girdilerle kör saldırılar gerçekleştirirler.

Ayrıca, MariaDB ile eşleştirilmiş herhangi bir programlama / komut dosyası dili tarafından sağlanan, daha fazla kontrol ve bazen daha iyi kontrol sağlayan kalıp eşleştirme ve düzenli ifade araçlarını göz önünde bulundurun.