R10 Nickini yazan gelsin
46
●1.572
- Dün, 21:27:37Ben şok bir eğlencem vardı onuda aldılarMediha adlı üyeden alıntı: mesajı görüntüle
- Dün, 22:02:20Oyuna girer girmez nasıl 16K ile başlıyorsunuz?WebMasterMarket adlı üyeden alıntı: mesajı görüntüle
- Dün, 23:08:38Merhaba,
2048 Snake üzerinde Chrome Developer Tools kullanılarak yapılan güvenlik testlerinde, oyun mekaniklerinin önemli bir bölümünün istemci tarafında değiştirilebildiği tespit edilmiştir.
Aşağıdaki bulguların incelenerek özellikle çevrim içi oyun modunda gerekli güvenlik önlemlerinin uygulanmasını rica ediyoruz.
1. Tespit Edilen Sorunlar
A. Sınırsız güç kullanımı
Chrome Console üzerinden oyuncunun powers nesnesine erişilerek aşağıdaki özellikler sürekli aktif tutulabilmektedir:- powers.shield – Sınırsız kalkan
- powers.magnet – Sınırsız mıknatıs
- powers.speed – Sınırsız hız
- stamina – Sürekli dolu enerji
- spawnShield – Uzatılmış doğma koruması
B. Skor ve kafa değeri manipülasyonu
Oyuncunun segs[0].value, total, peak ve addIncoming() gibi alan ve metotlarına müdahale edilebilmektedir.
2048 sisteminde normal yollarla kazanılmayan çok yüksek kafa değerleri oluşturmak mümkün görünmektedir.
Bu durum özellikle liderlik tablosu, oyuncuların birbirini yiyebilmesi ve rekabet dengesi bakımından risk oluşturur.
C. Oyuncu konumlarının değiştirilmesi
Oyunun JavaScript kapsamındaki snakes dizisine erişilerek oyuncuların isimleri, kafa değerleri, koordinatları, canlılık durumları ve bazı ağ kimlikleri okunabilmektedir.
Uzak oyuncuların yerel nesnelerinde:- x / z koordinatları
- segs gövde koordinatları
- alive durumu
Önemli: Bu testler, uzak oyuncuların gerçek oturumlarında öldürülebildiğini kanıtlamamaktadır. Şimdiye kadar doğrulanan etki istemci tarafındaki oyun durumunun manipülasyonudur.
2. Kaynak Kodunda Kontrol Edilmesi Gereken Bölümler
Özellikle şu fonksiyonlar incelenmelidir:- netPublish() – Oyuncu konumu, kafa küpleri, güç süreleri ve diğer durumların yayımlanması.
- handleEvent() – Ağ üzerinden gelen öldürme ve kesme olaylarının işlenmesi.
- killSnake() – Oyuncunun ölmesi ve değerlerinin saldırgana aktarılması.
- cutSnake() – Gövde kesme ve kazanım işlemleri.
- collisions() – Çarpışma kontrolü.
- addIncoming() – Kazanılan küplerin oyuncuya eklenmesi.
3. Kalıcı Çözüm İçin Gerekenler
1. Sunucu otoritesi
Oyuncu konumu, hız, kafa değeri, kazanılan puan, güç süreleri, hasar ve ölüm sonuçları sunucu tarafından doğrulanmalıdır.
İstemcinin gönderdiği değerler doğrudan doğru kabul edilmemelidir.
2. Skor doğrulaması- Kazanımlar geçerli toplama, yeme ve birleşme olaylarıyla ilişkilendirilmelidir.
- Kafa değerleri yalnızca geçerli 2048 seviyelerinde bulunmalıdır.
- Beklenmedik büyüklükteki artışlar reddedilmelidir.
- Infinity, NaN, taşma ve izin verilmeyen sayısal değerler engellenmelidir.
- Liderlik tablosu yalnızca sunucunun doğruladığı skoru kullanmalıdır.
- Güçlerin başlangıç ve bitiş zamanları sunucuda tutulmalıdır.
- Kalkan, mıknatıs ve hız süreleri istemci tarafından uzatılamamalıdır.
- Hız ve konum değişiklikleri zaman farkı, maksimum hareket hızı ve oyun fiziği üzerinden doğrulanmalıdır.
- Enerji tüketimi ve yenilenmesi sunucu tarafından hesaplanmalıdır.
- İstemciden gelen ölüm bildirimi tek başına oyuncuyu öldürmemelidir.
- Gerçek çarpışma mesafesi sunucu tarafından kontrol edilmelidir.
- Saldırgan ve hedefin doğrulanmış kafa değerleri karşılaştırılmalıdır.
- Kalkan, hayalet ve diğer dokunulmazlık durumları sunucudan kontrol edilmelidir.
- Aynı ölüm olayı birden fazla kez işlenmemelidir.
- Oyuncuların başka oyuncuları yetkisiz olarak ışınlaması veya elemesi mümkün olmamalıdır.
- Ağ kimlikleri doğrulanmış oturumlara bağlanmalıdır.
- Sahte, tekrar oynatılan veya sıra dışı sıklıktaki olaylar reddedilmelidir.
- Olayların sunucuda kayıtları tutulmalıdır.
- Anormal skor artışları, imkânsız hareketler ve tekrarlanan ölüm olayları izlenmelidir.
4. Güvenlik Testleri
Düzeltmelerden sonra ayrı bir test odasında şu senaryolar doğrulanmalıdır:
TestBeklenen sonuçConsole üzerinden kalkan süresini artırmaSunucu geçersiz süreyi reddederSınırsız hız veya enerji vermeHareket kurallarını aşamazKafa değerini devasa sayıya değiştirmeGerçek skor değişmezKazanılan küpleri katlamaGeçersiz kazanım kaydedilmezBaşka oyuncunun konumunu değiştirmeGerçek oyuncu etkilenmezSahte öldürme olayı oluşturmaSunucu doğrulama olmadan kabul etmezKalkanlı veya güçlü oyuncuyu haksız elemeGerçek ölüm gerçekleşmezYeniden doğma ve eski olayları tekrar göndermeÖnceki oturumun olayları reddedilir
- Dün, 23:19:14Sahibi yurtdisina cikmis gelince duzelticem diyorNetTasarim adlı üyeden alıntı: mesajı görüntüle
aga ya

