2010-08-09 26 views
10

HTML5, oyun tasarlamanın bir yolu olarak yaygın bir şekilde benimsenecektir, tahminidir. Ama bu konuda sorularım var: Çevrimiçi bir HTML5 oyunu nasıl güvende olabilir?"Tarayıcı oyunlarının geleceği" ne kadar güvenli?

Size bir örnek vereyim: kazandığınız zaman, örneğin, son derece zor bir seviye olan bu platform oyununu hayal edin. Bu rozeti gerçekten kazandığınızda, çevrimiçi profilinizi güncellemek için sunucuya bir talepte bulunulur. Bir hackerın bu oyunu göndermesi ve gerçek oyunu oynamadan rozeti kazanması son derece basit değil mi? Çünkü:

  • istemci tarafı kaynak kod O bunu önlemek için bir yol göremiyorum komut satırı

den Javascript yürütmek mümkündür

  • gizlemek için görünür ve imkansız Hacker rozeti kazanıyor ... Bu oyunu güvenli hale getirmenin bir yolu var mı?

  • +0

    Flash oyunlar aynı soruna sahip. İlgili (Flash): http://stackoverflow.com/questions/477258/how-to-cheat-and-avoid-cheating-in-flash-games –

    +0

    İlgili (Flash): http://stackoverflow.com/questions/ 1666213/flash-oyunlar-hack-skoru-49700-nasıl-geliştirir-flash-oyunlar-güvenlik –

    +0

    İlgili (neredeyse çoğaltmak): http: // stackoverflow.com/questions/2785414/is-flash-actionscript-herhangi-daha güvenli-daha-javascript-için-kalıcı-online-oyun –

    cevap

    4

    Evet, oyununuzu böyle tasarladıysanız, kesmek çok kolay olurdu. Ama bu neden HTML5'e özeldir? Bunu böyle yazılan herhangi bir oyunla yapabilirsin. Yerel bir masaüstü oyunuyla bile istekte bulunabilirsiniz. Tek fark, HTTP isteklerinin numaralandırılmasının bir masaüstü oyunu tarafından yapılan tersine mühendislik taleplerinden daha kolay olmasıdır. Çözüm, zafere bir çeşit “doğrulama” eklemek olurdu - gerçek algoritma oyundan oyuna değişecektir. Belki de kullanıcı oyun oynarken sunucu oyunun ilerlemesini takip etsin. Örneğin, bir satranç oyunu olsaydı, her hareketi sunucuya gönderebilir ve doğru şekilde çalıştığından emin olmak için hareketlerin doğrulanmasını sağlayabilirsiniz. Bu, gerçek zamanlı oyunlarla daha da karmaşıklaşıyor.

    Ancak, kullanmaya karar verdiğiniz herhangi bir algoritma, yenilgiye uğrayacaktır. Daha önce bahsettiğim satranç onaylama bile atlanabiliyordu: Kendi geçerli satranç oyununu sadece "oluşturabilirsin" ve oyunun geçerli olduğunu her seferinde aynı hamleyi sunucuya gönderebilirsin. (Bu, oyuncunun bir bilgisayara karşı olduğu varsayılır - iki insanın birbirlerine karşı oynaması daha kolaylaşır.)

    +0

    Tamam, teşekkürler ... Bu satranç oyununda, bilgisayar hakem olarak davrandığında, hamleleri aldığında, geçerli olup olmadıklarını kontrol edip mevcut oyunun oyunculardan birinin kazanıp kazanmadığını kontrol ederse güvenli olur. Ancak, platform tabanlı bir oyun için böyle bir hakem kurmak daha zor… – Harmen

    +0

    @Harmen: Doğru, bu yüzden büyük şirketler, oyunlarını kesmek için girişimleri durdurmaya çalışan yüzbinlerce dolar harcarlar. Kolay değil. Ve daha karmaşık ve güçlü anti-hile mekanizma olur, daha pahalı olur: daha fazla sunucu kaynaklarını kullanarak, zamanınızı daha fazla alarak, vb –

    2

    Bu, Flash tabanlı herhangi bir oyundan ya da World gibi bir indirilebilir istemciye sahip bir oyundan farklı değildir. Warcraft. Oyunun adaletine entegre olan her şey sunucuda ele alınmalıdır.

    +0

    Oh, çok doğru. Bu başlangıçtan bu yana çok oyunculu oyunlarda bir sorun oldu. World of Warcraft'ın konuşması bana 2007 yılından itibaren Software Engineering Radio bölümlerini hatırlatıyor. Http://www.se-radio.net/2007/08/episode-66-gary-mcgraw adresinde 20 dakikaya geç -on-güvenlik / – Cheekysoft

    1

    HTML5'in daha güvenli olabilmesinin bir yolu, istediğiniz zaman değiştirebilmenizdir. Öyleyse, bir kullanıcıya ödül vermesi için bir AJAX çağrınız olduğunu varsayalım. Bu çağrının imzasını periyodik olarak değiştirebilirsiniz, böylece 'hileler' artık çalışmayacaktır. Eski API'yi hala kullanan oyuncuların kaydını tuttuğunuzdan emin olun ve hileleri kullanarak oyuncuları cezalandırabilirsiniz.

    Hayır, bu tüm sorunlarınızı çözmeyecek ve en çok merak uyandıran oyuncuların bu konuda çalışabilecekleri yollar var (değişikliklerinizi ne kadar detaylandırdığınıza bağlı olarak), ancak bununla başa çıkmanın bir yolunu sunar. Bu, özellikle oyununuz önemli bir yatırım gerektiriyorsa. Oyuncular yakalanabilecekleri bir şansı varsa, ilerlemelerini riske etmeye istekli olmayabilirler. Sadece aldatma cezalarını açıklayan net bir davranış kuralına sahip olduğunuzdan emin olun.