Merhaba
Şimdi,bir algoritma yapmam gerekiyor şöyle düşünün sizin bir kullanıcı adınız var bir buton var ve butona basınca "tolgay007 butona bastı" gibisinden yazıyor.Şimdi burda soket kullanacağım için direk session erişimim yok.
Sokete gönderirken iki veri yollayacağım birincisi kullanıcı adı,ikincisi token dediğim benim üreteceğim bir kombinasyon.Burda php ile session kontrolü yapmayı unutun öyle bir kontrol yok.Algoritmam şöyle olacak:
1)Sokete kullanıcı adı ve kendi özel kombinasyonumla üretmiş olduğum kullanıcı adının şifrelenmiş hali gönderilir(bu token değeri oluyor).
2)Soket kullanıcı adını ve token değerini alır,tokenı nasıl şifrelediysem aynı şekilde çözer ve gelen sonuç kullanıcı adına eşitse isteği veritabanına işler.Eğer değilse çalışmaz.
Bu korumayı aşabilir miydiniz ? Yani kendi hesabınıza girip ufak bir değişiklik ile başkası gibi butona basmış gösterebilir miydiniz ?
Not:Unutmayın php ile session kontrolü yapamıyorum sokette,tamamen dediğim algoritmaya göre çalışacak.
Not 2:Token oluşturma algoritması karmaşık olacak,yani onun nasıl şifreleme yaptığını bulamayacaksınız.
Güvenlik önemli bir mevzubahis ise neden soket bağlantısını da oluşturacağınız bir PHP dosyası ile kurup, kullanıcı düğmeye tıkladığında, işlemlerinizi kullanıcıya hiç bir bilgi vermeden yapmıyorsunuz? Özel bir nedeniniz varsa, sabit bir token sandığınız kadar güvenilir olmayabilir. PHP ile soket bağlantısı kurmayacak bile olsanız kullanıcı adını, o an ki zaman ile birlikte şifreleyip dinamik bir hash oluşturun. Sunucuda kullanıcı adı ile zaman damgası birlikte elinizde olsun. Hem belirli bir zamanı geçen paketleri kabul etmemiş hem de kullanıcıya dinamik bir hash vermiş olursunuz. Başka bir kullanıcıya ait hash çalınsa da kısa bir zaman sonra geçersiz olmuş olur. Algoritmanız bir şekilde zayıf bile olsa, tam zaman bilinmeden, saldırganın elinde 1 değil, 2 bilinmeyen olur.
Nasıl bir yapı kullandığınızı bilmiyorum ancak diğer bir geçerli çözüm eğer kullanıcılar aslında üye ise, şifreler hem hash hem salt ile şifrelendi ise bir API oluşturun. Soket ile hem kullanıcı adını hem de hash değerini gönderin. İsterseniz bu değerleri de şifreleyebilirsiniz. Soket sunucusu API üzerinden kullanıcı adı ve hash değerini kontrol eder ve kesin çözüm elinizde olur.