Online Takip

ASP ‘de SQL Injection ve Çözümü

Posted on: 13 Şub 2009

asp ile programlama yapanların bilmesi gereken en temel problem olan sql injection, aslında çok basit çözümü olan bir sorundur.

Öncelikle sql injection açığı nedir? sql injection sayfa.asp?id=1 gibi algoritmaları olan sayfalarınıza kastı olan kişilerin kullandıkları bir hack yöntemidir. mesela formlarda veya querystring yöntemini kullanan programlamalarda sayfa.asp?id=1 de id=1 yerine id=<script> yazarsanız sisteminiz bozulabilir. Bu yöntemi kullanan kişi yönetim panelinize bile girebilir.

normalde sayfa.asp?id=1 olarak gönderilen veri sayfa.asp sayfasında

1
2
3
4
5
6
<%
id=request.querystring("id")
Set recordset = Server.CreateObject("ADODB.Recordset")
sql="select * from tablo where idnumarasi="&id&""
recordset.open sql,dbbaglantisi,1,3
%>

gibi bir algoritma ile yürür. Ancak sayfa.asp?id=1 ‘i kendi amaçları doğrultusunda değiştiren kişiler kalıcı sorunlara neden olabilir.

Bu olayı engellemenin birkaç yolu var. En basit olan yöntem isnumeric yöntemidir. Bu kod gelen verinin sayı olup olmadığını kontrol eder. böylece sayı haricinde birşey gelirse hata verdirebilir veya hiçbir işlem yapmadan sayfayı yönlendirebilirsiniz.

1
2
3
4
5
6
7
<%
id=request.querystring("id")
if isnumeric(id)=false then
response.write "hatalı istek"
response.end
end if
%>

Diğer bir yöntem replace yöntemidir. Aşağıdaki kodlarla gelen veriyi istediğiniz doğrultuda değiştirebilir ve filtreleyebilirsiniz. Mesela kullanıcı size sayfa.asp?id=<script> şeklinde bir veri gönderdiyse siz bunu replace komutu ile değiştirebilirsiniz.

Önce replace fonksiyonunu vereyim.

1
2
3
4
5
6
7
<%
function koru(kelime)
kelime=replace(kelime, "<" , "" )
kelime=replace(kelime, "<script>" , "" )
koru=kelime
end function
%>

bu kodlarla eğer id olarak < veya <script> gelirse bu verileri boşluğa çevir komutu verdik. hemen ardından da request nesnemize bu fonksiyonu ekliyoruz.

1
<% id=koru(request.querystring("id"))%>

böylece sql injection sorununu çözmüş olduk. amatör programcılar arasında bolca sözü geçen ‘or’ açığı da bu yöntemle çözülür. mantık aynıdır. replace komutu ile işaretlerini sildirirseniz problem ortadan kalkar

Kaynak

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s

Web Tasarım

Oto Galeri Portalı = 200 $

Emlak Portalı = 200 $

Site Kurucu = 100 $

E Ticaret Sitesi = 250 $

İlan Sitesi = 200 $

Haber Portalı = 350 $

Arkadaşlık Sitesi = 200 $

E Katalog = 200 $

Flash Site Kurucu = 200 $

Kategoriler

Kategoriler

Takvim

Şubat 2009
P S Ç P C C P
« Oca   Mar »
 1
2345678
9101112131415
16171819202122
232425262728  

Arşiv

Blog İstatistikleri

  • 16,119 kişi

RSS Bay Bedava

  • Bir hata oluştu; besleme kapalı gibi görünüyor. Lütfen daha sonra tekrar deneyin.

RSS Bildirgec.org

  • Bir hata oluştu; besleme kapalı gibi görünüyor. Lütfen daha sonra tekrar deneyin.

RSS InternetHaber.com

  • Bir hata oluştu; besleme kapalı gibi görünüyor. Lütfen daha sonra tekrar deneyin.

Toplistler

News & Media Blogs - BlogCatalog Blog Directory
%d blogcu bunu beğendi: