• Serverınızın epinlerini tamamen Turkmmo güvencesiyle satın. Kredi kartı, mobil ödeme, havale/eft ve uygun komisyon oranıyla. Hemen mağaza başvurunuzu yapın. Oyunalisveris.com





Sitemize reklam vermek için [email protected] adresine mail atabilirsiniz
For Advertising Contact [email protected]


SQl Acığı Kapatma Yolları

Celeronn11

Dans Zamanı
Telefon Numarası Onaylanmış Üye
Site Yetkilisi
Süper Moderatör
VIP Üye
Developer
Ticaret - 0%
0   0   0
Katılım
8 Eki 2017
Konular
974
Mesajlar
4,327
Beğeniler
878
MmoLira
91
DevLira
57
#1
SQL Nedir ?

# SQL (Structured Query Language) veritabanından bilgi çekme silme vb. gibi işlemler yapabilen bir dildir. Bulunduğumuz zamanda çoğu web sitelerinin alt yapılarında bu veritabanı vardır.
# SQL en yaygın olan güvenlik açığıdır ve çok tehlikelidir.
# SQL hazır scriptler (vbulletin,vb.) gibi yüksek güvenlik testlerinden geçirilmez.
# Bu web siteleri vertibanı ile anlaşmaları için SQL’e ihtiyaç duyarlar.
# Bu web siteleri vertibanı ile anlaşmaları için SQL’e ihtiyaç duyarlar.

Nasıl Kapatılır ?

servar da magic_quotes aktif değilse şayet tırnak problemleri yaşamanız veya sql injectiona maruz kalmanız olası,

sunucu size ait ise php.ini de magic_quotes = değerinin on olmasına dikkat edin, bunun haricinde sayfalarınızın kodlaması utf-8 ve addslashes() fonskiyonundan geçirmeniz durumunda sql injectiona maruz kalmazsınız,

sql injection $_GET ve $_POST ile html den alınan verinin mysql motoruna gönderilirken karakterlerin yanlış algılanması sonucu meydana gelir

addslashes() html den gelen operatör karakterleri ” veya ‘ başına \ koyarak sorgunun es geçmesini sağlar, eğer magic_quotes kapalı ise addslashes işlev görmez. bu nedenle her ne kadar fonksiyondan geçirirseniz geçirin sql injection yinede gerçekleşir. bunun akabinde yine sayfa kodlamanız utf-8 değilse ascii karakter

olarak addslashes bypass edilebilir, sql injection yazılım operatörlerinin karakter setine göre alınıp işlenmesinden ibarettir, eğer siz bu veriyi işlerken bu karakterin query ye ait olmadığını anlatamazsanız query niz bozulur ve injection gerçekleşir. Burada asıl mesele ” ve ‘ süzülmesi olayıdır. query lerinizde where sutun=’$degisken’ şeklinde tırnak içersine almanız query nizin bozulmasını engeller,

aynı şekilde

where sutun=$degisken şeklinde kullanmanız query nizin bozulmasına neden olur, çünkü verinin baslangıc ve bitiş karakterleri yoktur.


Şöyle basit bir örnek verelim.

gelen verimizin Ahmet”in Ceketi olduğunu varsayalım

PHP:
1
2
3
$degisken = $_GET['veri']; 

"select * from tablo where sutun=$degisken"
Veriyi değişken yerine koyduğunuzda

PHP:
1
"select * from tablo where sutun=Ahmet"in Ceketi"

Şeklinde query de en baştaki ” ve en sondaki ” query aralığını belirtir, veride bir tane daha ” koyarsanız query orda biter yani where sutun=Ahmet” — devamı yok sayılır.
Ardından injection gerçekleşir. bunu şöyle yapsak

$degisken = addslashes($_GET['veri']);

burada verimizin çıktısı,

Ahmet\”in Ceketi şeklinde olacaktır. addslashes veriden gelen ” karakterinin query e ait olmadığını ibare edecek yani karakteri es geçmesini (görmezden gelmesini) sağlayacak \ karakterini ekler,

şayet where sutun=’$degisken’ şeklinde kullanırsanız, query i dahada kısıtlamış olursunuz, mysql başlangıc berlireçleri yanı sıra, where sutun kısmında da bir kısıtlayıcı eklemiş olursunuz.

Alıntı
 

(Mavi Ruh)

Mutlu Sonları Hiç Sevmem
Site Yetkilisi
Süper Moderatör
Ticaret - 100%
1   0   0
Katılım
20 Eki 2017
Konular
123
Mesajlar
1,883
Beğeniler
849
MmoLira
487
DevLira
99
#2
Teşekkür Ederim Biraz Görsellik Katarsan Daha Güzel Bir Konu Olabilir :)
 
Üst