SOL
SAĞ
SQl Acığı Kapatma Yolları
SİDEBAR REKLAMI

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.

YAZAR HAKKINDA;
arcface
Admin

Web Developer

KONU YORUMLARI
YORUM YAP
Image

SQL

SQl Acığı Kapatma Yolları

SQl Acığı Kapatma Yolları SQl Acığı Kapatma Yolları SQl Acığı Kapatma Yolları SQl Acığı Kapatma Yolları SQl Acığı Kapatma Yolları SQl Acığı Kapatma Yolları SQl Acığı Kapatma Yolları

EN ÇOK OKUNAN 5 MAKALELER
arcface
Admin Yazdı;

3 ay önce

Yarı insan denilince ne anlıyoruz önce ona bir bakalım. Yarı insan; bi..

arcface
Admin Yazdı;

2 ay önce

Rubinum2 Web Panel Rubinum2 Web Panel Rubinum2 Web PanelRubinum2 Web..

arcface
Admin Yazdı;

2 ay önce

Afro2 Web Panel Kodlaması Afro2 Web Panel Kodlaması Afro2 Web Pane..

arcface
Admin Yazdı;

2 ay önce

Aegea2 Site Teması İndir Aegea2 Site Teması İndir Aegea2 Site Teması..

arcface
Admin Yazdı;

2 ay önce

Discord Widget Discord Widget Discord Widget Discord Widget Di..