09/07/06
Bu sözler Yüzüklerin Efendisi üçlemesinin ilk bölümünden. Nostalji yapıyorum da biraz :D
Neyse asıl yazmak istediğim ajax ve güvenlik üzerine birkaç küçük not. Ne alaka demeyin okuyun sonra karar verin;
Dün akşam üstü dolaşırken internetin lüks semtlerinden birinde bir sitede güzel bir oylama sistemi gördüm, yalnız üyeler oy verebiliyormuş, ne güzel güvenliği iyi yapmışlar deyip üye oldum. Hoşuma giden şeyleri inceleyip nasıl çalıştıklarını araştırmayı seviyorum. ama fazla inceleyince kurdu çıkıyor :D
gerçi buradaki programcının hatası ama ajax ile uygulama yapan herkesin düşebileceği hatalardan.
1. Heryerde get metodu kullanmak
2. Sunucu tarafında isteğin gerçekten ajax ile yapılıp yapılmadığını kontrol etmemek.
3. Yapılan işlemlerde yetkilendirme kontrolunun yapılmaması (bu daha çok sunucu tarafını ilgilendiriyor).
get methodu ile çalışmak kolay olduğu için çokça tercih ediliyor ve kodu biraz incelememiz işlemin nasıl olduğu hakkında fikir edinmeniz için yeterli.
Sunucu tarafında isteğin ajax ile olup olmadığını kontrol etmek özellikle get methodu ile çalışıyorsanız güvenlik açısından yararlı olabilir.
Prototype ile çalışanlar için şöyle bir güzellik var; http istek başlığına X-Requested-With: XMLHttpRequest ekliyor. Bu sayede isteğin prototype ile yapıldığını ayırt edebilirsiniz.
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
$_SERVER ['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'){
//prototype ile istek yapıldı
}
else
//prototypesız istek yapıldı.
bu yöntemi SitePoint de javascritsiz istekleri bulmak için kullanmışlar.
Her ne kadar bunlar güvenliği sağlıyor gibi görünse de asıl olay sunucu tarafını ilgilendiriyor. İsteğin sadece ajax ile yapılacağını düşünüp kullanıcı yetkilendirmelerine yeteri kadar önem verilmiyor.
Şimdi alakayı kuralım ajax Web 2.0ın altın yüzüğü, güvenliği elden bırakmadığınız sürece ;)
17/06/06
2 gün önce yazılım mühendisliği dersini veren hocamla görüştüm. derste yapılan projelerin hep aynı online servisler olduğundan yakınıyordu. "Herşey online herşey online" haksız da sayılmaz özellikle bu projeyi görünce siz de aynı fikre kapılacaksınız.
eyeOS kendini açık kaynak kodlu web tabanlı işletim sistemi olarak tanımlıyor. Şimdilik iddia ettiği kadar olmasa da geleceği oldukça parlak gözüküyor. Test ettim beğendim;)
19/01/06
Ajax, web için olmazsa olmaz bir konuma gelmedi henüz ama işleri bazen öyle kolaylaştırıyor ki, kullanmasam bişeyleri eksik yaşadığımı düşünüyorum bazen ve öyle hızlı gelişiyor ki daha nedir diye araştırırken adamlar kendi
APIlerini yazmışlar. İlgilenenler için
burayı ziyaret etmenizi tavisye ederim.
gelelim sorunlara ajaxın kalbi
XMLHTTP nesnesi ile
IE arasında bir anlaşmazlık var. bazen rahatsız edici bir güvenlik uyarısı veriyor. neden niye diye ararken buldum bu https olan bir sitede http den yayımlanan bir nesne kullanmak gibi bişey. ilgililer bilir güvenli alanda güvensiz alandan bir nesne çağırınca /* bu resim, js, css olabilir */ IE güvelik uyarısı veriyor ehh haksız da sayılmaz.
Aynı sorun XMLHTTP objesi içinde geçerli. eğer alınan veri farklı bir domainden geliyorsa bu uyarı çıkıyor. meselâ
flickrdan rss ile veri alıp kendi sitemde göstermek istiyorum. çözüm basit sunulan verileri kendi sitenizden almanız gerekiyor.
2. sorun Ajax ve Türkçe karakter problemi, sorunun kaynağını tam olarak anlayamadım. gelen verilerde problem yok, sunulan verinin karakteri de doğru. veriyi browser bozuyor olamaz çünkü hepsinde aynı problem var. büyük ihtimalle xmlhhtp objesi bozuyor. kimin bozduğu çokta önemli değil. çözüm olarak hiç Türkçe karakter kullanmamaya karar verdim :D
böyle de çözüm olmaz demeyin oldu bile..
html de her karakterin bir kodu var ç için ç kullanıyoruz. böyle olunca çözüm oldukça basitleşiyor; Türkçe karakterleri ya da düzgün gözükmeyen karakterleri html kodu ile değiştirip sunmak gerekiyor veriyi. PHP için şöyle bir fonksiyonu yazdım.
<?php
function elie_js_friendly($string){
$string = str_replace(
array('ç', 'Ç', 'ğ' , 'Ğ', 'ı', 'İ', 'ö','Ö','ü','Ü','ş','Ş'),
array('ç', 'Ç', 'ğ',
'Ğ', 'ı', 'İ', 'ö',
'Ö', 'ü', 'Ü', 'ş',
'Ş'),$string);
return $string;
}
?>
diğer karakterler için
buraya bakıp ekleme yapabiliriniz.