SQL KULLANMADAN YETERLİ BİR WEB SİTESİ NASIL YAPILIR?
SQL Nedir?
SQL bir veri tabanında değişiklik yapma için kullanılan dildir. Günümüzde çoğu web sitelerin yapısını oluşturan veri tabanında bul dil vardır. Bu yüzden büyük bir güvenlik açığı oluşturur. Bu durum oldukça tehlikelidir. SQL kullanmadan web sitesi yapımı bu yüzden önemlidir.
SQL İnjection
Web site tasarımı çok dikkat edilmeden yapılabilir ve veri tabanında bulunan SQL dili açığına sahip sitelerde de uygulanan ekrandaki alanlara gerekli ifadeler eklenerek yapılan bir saldırı yapılabilir. Bu saldırı taktiğine SQL injection denir. Saldırı şöyle gerçekleşir;
Saldırı yapmadan önce SQL olan siteyi bulmak gereklidir. Öncelikli olarak sayfa bulunabilmesi için dork gereklidir. Bulunan URL’de search, id gibi değişken değerler olması gereklidir. URL’de yer alan php?id=45 gibi sayıların sonuna tırnak işareti konulur ve enter’lanır. Eğer site hata verirse SQL hatası var demektir.
Hata bulunduktan sonra gerekli programlar veya manuel olarak injection yapılır. Manuel injection yapılacaksa öncelikli olarak sitede kolon sayısı bulunmalıdır. Order+by+ veya Group+by+ komutu kullanılarak kolon sayısı bulunur. Çeşitli sayılar verilerek hata gidinceye kadar denenir. Sayı bulunduktan sonra union+select+ komutu kullanılarak kolanlar ekrana yansıtılır. Sonra sürüm bulunur. Sonra database’den tablolar alınır.
SQL İnjection Güvenliği
Genelde saldırılar ASP.Net gibi veri tabanlarında daha çok olur. Siteler buna daha sonra çözün kolanlar ekrana yansıtılır sonra çözüm aramıştır. PHP tabanlı siteler kullanıcı şifresini şifrelemektedir. Şifrelemeler kriptolu sistemler ile yapılmaktadır. Sitenin güvenli olup olmadığını öğrenmek için çeşitli deneme, test araçları vardır. Bunlardan bazıları; Acunetix Web Vulnerability Scanner, Havij dir.
Dikkat Edilmesi Gerekenler
Sitenizin güvenli olması için birkaç dikkat edilmesi gereken nokta vardır. Öncelikle kullanıcıların girdilerine dikkat edin. Veri tabanına da kesinlikle admin düzeyinde bağlanmayın. Veri tabanına verilerinizi kriptolayarak yazın ve asla aktif SQL sorguları kullanmayın.
Kullanıcıdan alınan veride ‘ karakteri ve “ karakteri getirilerek SQL injection’dan koruma sağlanabilir. Bu karakterler karakter koduna çevrilmelidir veya başına karakteri getirilmelidir. Böylece SQL programları komutu algılayamayacaklar ve site korunmuş olacaktır.
PHP de koruma için HTML kodlarından oluşmuş web tasarımınızı html kodlarından temizlemeniz gereklidir. Strip_tags() fonksiyonu HTML kodları yerine kullanılabilir veya htmlentities() fonksiyonu ile sitede paylaşılan HTML kodlarını etkisizleştirerek karakter koduna çevrilebilir.
Özel yazılım geliştirirken mutlaka güvenliğiniz için bloğumuz da güvenlik alanındaki makalelerimizi okuyarak geliştirin. Güncel saldırıları basit hataları bu alanda elimizden geldiğince sizlere yol gösterecek şekilde yazmaya çalışacağız.