"keep it secret, keep it safe!"

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 ;)

Keywords: ajax,web2.0,güvenlik,prototype