Kullanıcı güvenliği

Online sistemlerde kullanıcı session bilgileri çeşitli yollarla tutuluyor. Bunlardan birisi cookie ile tutmak. Cookie ile bilgi tutmanın güvenlik problemleri var. Sadece eğer ki kendi bilgisayarıysa, işaretleyerek cookie üstünden daha uzun session için tutulmalı. Diğer şekillerde cookie ile bilgi tutmaya karşıyım.

PHP'de $_SESSION["memberid"] gibi bir parametrede üye ID'sini tutma meselesinin de problemleri olabilir. Session-hijack denen bir olay var. Nasıl yapıyorlar bilmiyorum ama var böyle birşey.

Bana en güvenli yol şöyle gözüktü - (ki bunu cep telefonu operatörleri de böyle yapıyormuş)

$_SESSION["sessionkey"] tutulur. Bu md5 ile hash edilmiş geçici bir şifre olur. onlineusers diye ikinci bir tablo olur, bu tablo'da şunlar tutulur:
{sessionkey , memberid, timestamp}

- timestamp belli bir süreden önce olanlar cronjob ile temizlenir.
- $_SESSION["sessionkey"] değeri kısa süre için geçerli olur (en fazla 1 saat).
- Bu sessionkey ile memberid'ye ulaşır PHP ve bu değeri bir global-variable içeride gezdirir ve işlemleri bunun üstünden yapar. (php üstünde dönen variable'lar client-side'dan çalınamaz nasıl olsa)
- Böylece sessionkey'in valid'liği 15-20 dakika süreceğinden ve md5 gibi kırılması (imkansıza yakın) bir değer olduğundan kırsa bile, o session çoktan bitmiş olacağından session-memberid değeri çalınamaz bir noktada olur.

Araştırdım GSM operatörleri de buna benzer bir yöntem kullanıyor. Cep telefonuzu açtığınızda baz istasyonu ile telefonunuz arasında böyle bir session-key yerleşiyor ve 10-15 dakika geçerli kalıyor. Böylece takibi bizzat operatör yapmadıkça imkansıza yakın hale geliyor.

Hiç yorum yok:

Yorum Gönder