Navigation |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ascii kodlar ve Zararlı karakt |
|
|
asp dilinin olmazsa olmazlarından biriside zararlı karakterlerin süzülmesi olayıdır.
bu konu asp dilinde güvenlik veya sql injection adı altında defalarca anlatıldı.
madem zararlı ; ms bunları niye kullanıyor gibi sorular aklınıza gelmiş olabilir.
aslında bu kodlar zararlı değildirler;sadece asp dilinin çalışmasına katkıda bulundukları için bizler zararlı kodlar olarak algılarız.
mesela
union
select
join
"
--
gibi
örnekleyecek olursak
konu_goster.asp adında bir sayfamız olsun ve konular.asp sayfasından gelen id stringi ile çalışsın.
konugoster.asp?id=1 dendiği zaman ilgili tablonun en üstteki satırını bize sergilesin.
burada bir yerine a harfi koyarsak scritimiz hata verecektir.
neden ?
çünkü çağırdığımız değer numerik bir degerdi ve biz isnumerik bir değer atadık.
dolayısıyla ıss bunu yorumlayamadı ve dizinin geçersiz olduğuna dair hata verdi.
işte bu;
alınan hatanın döndürülmesini değiştirebilecek karakterlere zararlı karakterler diyebiliriz.
sözü şuraya getirmek istiyorum. yukardada yazdığım gibi. zararlı kodlar bir kaç karakterden ibaret değildir.yani tüm karakterler zararlı olabilir. biz sadece hatanın döndürülmesini değiştiren karakterleri süzmekteyiz..
konu adında bir tablomuz var, birde başlık adında bir tablomuz var. bunu
konu_getir.asp?id=10 şeklinde onuncu satırdaki konuyu çağırıyoruz.
konu_getir.asp?id=10 UNION SELECT TOP 1 baslik FROM konu where konu=’ deneme ’--
diye enterladığımızda hiç hesapta yokken 10 konudan atlayıp tablonun en üstündeki satırın konu fieldinde deneme geçen yazının başlığının bize verecektir.
bu ne gibi sakıncalar doğurur? bu çok büyük sakıncalar doğurur: )
özellikle kullanıcı bilgilerinin saklandığı tablolar büyük risk altındadırlar.
bunu nasıl engelleriz..
Function koru( )
if isnumeric(trim(request.querystring("id" ) )=false then
Response.redirect "hata.asp"
Response.end
end if
End Function
diye bir function hazırlayıp
gelen değeri
KORU(request.querystring("id" ) DİYE ÇAĞIRIRSAK
gelen değer numerik değilse hata.asp sayfasına yönlendirilir.
böylece kodun bir zararı engellenmiş olurki hatalara müdahale edilemez.
tabiki iş bununla bitmiyor.
yukarda yazdığım gibi. union, select, join, drop, on, , ", -- gibi karakterlerede functionlarımızda müdahale etmeliyizki.
bu karakterler kullanılamasın.
çoğumuz bu konuyu az veya çok biliyoruz.
ve yine çoğumuzun yaptığı hata şudur.
karakteri tamamen yok etmek...
hayır, bu doğru bir davranış değil.
tamam; küçük projelerde olabilir ama büyük düşünüyorsanız karakterleri asla yok etmemelisiniz.
mesela = değerini süzmüş ve boşa çıkartmışsam
veride bir daha o karakteri kullanamam, buda işimi zora sokar.
bu durumda yapmamız gereken; karakterin ascii karşılığını kullanmak.
kesinlikle karakteri boşa çıkartmıyalım arkadaşlar.
bunun zararlarından biriside; sizi ziyarete gelen kullanıcı yok ettiğiniz karakteri göremezse sizin hakkınızda iyi şeyler düşünmeyeceği aşikardır.
mesela bir siteniz var ve kullanıcılar üye oluyor.
eğerki siz union değerini boşa çıkartmışsanız.
On Air kullanıcı adını seçen bir kişi aa birde ne görsün, Kullanıcı adı air olmuş : ) on yok...
bu örnekler çoğaltılabilir.
konuyu fazla uzatmadan size ascii tablosunu veriyorum.
dilediğiniz karakteri süzebilirsiniz.isterseniz hepsini süzün ama fazlada abartmaya gerek yok.
yok illa ki : ) süzecem diyorsanız buda sevimsizin size armağanı olsun... bir kaç satırlar tüm işinizi göreceğim.
Kod Alanı: |
Function sevimsiz(strwebhocam )
If strwebhocam = "" Then Exit Function
For webhocam = 32 To 127 Step 1
strveri = Replace(strwebhocam, Chr(webhocam ), "&#"&Chr(webhocam )&";", 1, -1, 1 )
Next
sevimsiz = strwebhocam
End Function |
|
dilediğiniz gibi kullanın.
iyi çalışmalar.
 |
|
|
|
|
|
|
|
|
Bugün 91 ziyaretçi (108 klik) buradaydı |
|
|
|
|
|
|
|