Bir MMO için bilgisayar korsanlığı mekanizmalarının bilgisi gerekli mi?


10

Diyelim ki, gelecekte çok fazla çevrimiçi bir oyun (mmo) yapacak bir grup projesine katılmak isteyen (şimdi değil! Önce öğrenmem gereken çok şey var) planlıyorum ve işim ağ oluşturma olurdu bölümü. Ben ağ programlama aşina değilim (PHP, MYSQL hakkında çok temel bir kitap okudum ve WAMP ile biraz karışıklık ).

PHP ve MYSQL eğitimi alırken hacklemeye bakmalı mıyım? Bağlantı noktası taraması, yönlendirici korsanlığı, vb. Gibi bilgisayar korsanlığı. MMO'larda insanlar her zaman hile yapmaya çalışır, botlar ve benzerleri, ancak en kötü senaryo birisinin veritabanlarını hacklemesini sağlamaktır. Bu sadece benim bu anlayışım, gerçekten bilmiyorum. Ancak alt ağ / bağlantı noktaları / IP (yerel / küresel) / vb gibi ağ oldukça iyi anlıyorum.

Profesyonel görüşünüze göre, (Konuyu anlarsanız, beni aydınlatın) Bu olayların gerçekleşme olasılığına karşı koymak için bunları öğrenmeli miyim?

Ayrıca, bahsettiğim şeylerden (port tarama, yönlendirici hackleme) İncelemem gereken hackleme ile ilgili başka bir şey var mı? Ağın kötü amaçlı / Güvenlik yönlerine çok aşina değilim.

Ve bir not: Nasıl hackleneceğini öğrenmeye çalışan bir çocuk değilim. Sadece üniversiteye gitmeden önce mümkün olduğu kadar çok şey öğrenmek istiyorum ve bunu incelememe gerekip gerekmediğimi gerçekten bilmeliyim.


10
"Büyük" olarak kabul edilecek kadar büyük sayılara ölçeklenebilen arka uç sunucu sistemleri yazmak , "ağ programlamasına aşina değilseniz", bilgisayar korsanlığından daha büyük bir sorundur. Sadece normal bir çok oyunculu oyun değil , bir MMO yapmaya çalıştığınızdan emin misiniz ?

1
Anlıyorum; sorunuzun ifadesi gerçekten bu MMO üzerinde çalışmaya çalıştığınız gibi görünüyor.

7
Yani, ağa aşina değilsiniz, bir MMO (planlayabileceğiniz en zor şey) yapmayı planlıyorsunuz ve kendinize, bilgisayar korsanlarına karşı kendinizi nasıl savunacağınızı öğrenmeniz gerekip gerekmediğini kendinize soruyorsunuz. Uh. Tabii ki biliyorsunuz ve bunu biliyorsunuz. Bunu sormanın anlamı nedir?
o0 '.

2
ilgili, gamedev.stackexchange.com/a/21598/6937 Kısa cevap, yinelemeli gelişimi duyduysanız, aynı şekilde öğrenmeye bakabilirsiniz. Güvenlik, bundan sonra bir ek olarak çalışma eğilimindedir. Güvenli bir MMO sunucusu yapmadan önce, sadece bir mmo sunucusu yapın, Bunu yapmadan önce, bağlantılı
yazının

1
Bu, gelecekteki kıyafeti için en uygun kravatın ne olduğunu soran cumhurbaşkanı olmak isteyen 14 yaşında bir çocuk gibi. O çocuk muhtemelen başkan olmayacak ve olsa bile kravattan daha önemli sorunlara sahip olacaktı. Muhtemelen başarılı bir şekilde bir "grup projesi" ile bir MMORPG oluşturmayacaksınız ve eğer yaparsanız bundan daha büyük sorunlarınız var.
Thomas Bonini

Yanıtlar:


16

Evet, ölçeğinden bağımsız olarak herhangi bir çok oyunculu oyun geliştiren takımdaki (aslında birden fazla kişi), hem güvenlik hem de donanım düzeyinde ağ güvenliği kavramları hakkında güçlü bir çalışma bilgisine sahip olmalıdır.

Bu, özellikle ajansın sürekliliğini içerecek oyunlar için geçerlidir, çünkü bu, oyuncunun yatırımı oluşturur ve sonuç olarak bilgisayar korsanları için kazançlı bir hedef haline getiren bir şeydir.

Üniversitede ağ / ağ güvenliği / genel güvenlik (kritografi, et cetera) dersleri almak, söz konusu geliştiricilerden biri olmanız için gerekli arka plan bilgilerinin size verilmesinde yardımcı olacaktır.


11

Çok oyunculu bir oyun yazmaya çalışmadan önce güvenlik hakkında bir şeyler bilmek iyi bir fikirdir, ancak port tarama ve yönlendirici hackleme, hatta kriptografi gibi şeyler bu aşamada bakmanız gereken şey değildir .

Aksine, öğrenmeniz gereken şeyler güven , onaylama ve sağlamlıktır . Biraz psikoloji, özellikle de zorluklar ve ödüller hakkında bilmek de kötü bir şey değil. Bunun gibi kısa bir cevapla size gerçekten bunun çoğunu öğretemiyorum, ancak güvenli programlamaya başlamanız için bazı ipuçları:

  • Doğrudan kontrolünüzün dışından gelen herhangi bir girişi beklediğiniz gibi olmayabilir. Bu, tüm kullanıcı girdilerini, ağ üzerinden aldığınız her şeyi ve hatta kod tabanınızın diğer bölümlerinden herhangi bir şeyi içerir. Girdinin ne olduğunu düşünmemenin zihniyetine girmeye çalışın gerektiğini içerebilir, hatta bir saldırganın neler ilgili olabilir yerine seni beslemek, ama sadece neyi giriş hakkında olabilir muhtemelen olmak ve nasıl güvenle almak gelebilecek tüm olası girişini işlemek için.

  • PHP ve MySQL'den bahsettiğinizden, SQL enjeksiyonuna bakarak başlayın ve siteler arası komut dosyası saldırılarına bakın. C gibi düşük düzeyli dilleri de biliyorsanız, arabellek taşması saldırılarına bakın. Sadece onları nasıl önleyeceğinizi düşünmeyin - kodunuzu nasıl yazacağınızı düşünün, böylece bu tür hatalar, ister kazayla isterse kötü amaçlı olsun. Programlama diliniz, bunları amaçlandığı gibi kullanmayı öğrenirseniz, bunu yapmanıza izin veren araçlara neredeyse kesinlikle sahiptir.

  • Çok oyunculu bir oyunda, muhtemelen oyuncunun bilgisayarında çalışan bazı istemci kodunuz olacaktır. Yeterince akıllı ve kararlı bir kullanıcının her zaman bu koddan ödün verebileceğini ve ne yapacağını yapabileceği fikrine alışın istediklerini . Bundan kaçınabiliyorsanız müşteriye güvenmeyin . Bundan kaçınamıyorsanız, sadece ihtiyacınız olduğu kadar güvendiğinizden emin olun.

  • Tüm yumurtalarınızı bir sepete koymamaya çalışın. Oyununuzu, web sitenizi ve veritabanınızı ayrı sunucularda çalıştıramazsanız, en azından ayrı hesaplar altında çalıştırın ve hiçbirinin birbirlerine ihtiyaç duyduklarından daha fazla erişemediğinden emin olun. Tamam, belki hem oyununuzun hem de web sitenizin kullanıcı veritabanınıza erişmesi gerekir, ancak kesinlikle yönetici erişimine ihtiyaç duymazlar , değil mi? Belki de sadece okuma erişiminden daha fazlasına ihtiyaç duymazlar . En azından, böyle katı bir bölümlendirme yapmaya zorlamasanız bile, oyununuzu daha sonra yerine yerleştirilebilecek şekilde tasarlayın - oyun sunucunuzun veritabanına yönetici erişimi gerektirmesini sağlayın . Unutmayın tüm yazılım hataları vardır ve er ya da geç birileri irade senin içinde bir güvenlik deliği bul.

Genel olarak, güvenlikle ilgili fark edilmesi gereken şey, bunun bir zihniyet olmasıdır . Bu, en son güvenlik terimlerini bilmek ya da en son saldırıların nasıl çalıştığı ya da bilgisayar korsanlarının yapmadan önce ne yapacaklarını tahmin etmeye çalışmakla ilgili değildir (tüm bu şeyler bir şekilde kullanılabilir olsa da).

Gerçek güvenli programlama, kullanılması gerektiği gibi araçların nasıl kullanılacağını öğrenmek, kodunuzu her birinin ne yaptığını anlayabilecek kadar küçük parçalara bölmek (ve doğru yaptıklarından emin olmak) ile ilgilidir. diğer bölümleri tehlikeye atılır) ve beklenmedik bir şekilde beklemek için kodunuzu yazma hakkında. Tüm bunları yaparsanız, bilgisayar korsanlarının ne deneyebileceğini bilmenize gerek yoktur , çünkü her şeye hazırlıklı olacaksınız.


8

Şahsen, hackerlar için henüz endişelenmezdim .

Gerekçe basit: oldukça popüler bir oyun olana kadar hacker / dolandırıcı almayacaksınız; yani kesmek / hile için zaman ayırmaya değer. Öncelikle bir oyun kurulana ve bu tür şeyleri finanse etmek için gelir gelene kadar bekleyin.

Kodunuzu hacklenemez veya aldatılamaz olarak kandırmak için çok fazla zaman harcayabilirsiniz (yani, çok fazla). Ya da (yine de yapmanız gereken) düzenli saha dışı yedeklemeler yapabilir ve düzenli geri yükleme noktaları oluşturabilirsiniz. Bir istismar olduğunda, kapatın.


1
Ben kabul ederken bir iyi oyun bir yapım nazaran öncelik verilmesi gerektiğini güvenli biri Söyleyebilirm bazı ortak güvenlik sorunları ve genel en iyi uygulamaların farkındalık derecesi başından itibaren sahip olmak iyidir. Aksi takdirde, oyunun başlaması ve ne zaman bitmesi durumunda kendinizi savunulmaz bir durumda bulabilirsiniz. Özgün tasarımınız temelde güvensiz ise, daha sonra yama yapmaya çalışmak bir hidra ile savaşmak gibi olabilir: bir istismar her kapattığınızda, hileler iki tane daha bulur ve bunu durdurmanın tek yolu önemli bir kısmı yeniden tasarlamak ve yeniden yazmak olabilir kod tabanınızın sıfırdan.
Ilmari Karonen

1
@IlmariKaronen, konsepte katılıyorum, ama pratikte değil. Asker bağlamı göz önüne alındığında, genel olarak ağ öğrenmeye odaklanmaları gerekir. Ağ kurmayı öğrendiğinizde kriptografi hakkında bilgi edinme eğilimindesiniz. Başlangıç ​​aşamasındalar. Güvenlik, ne yaptığınızı bildiğiniz ve güvenliğe değer bir şey oluşturduğunuzda önemlidir. Bu tür bir soru soran insanlar, ilk önce güvence altına almaya değer bir şey bile oluşturabilecekleri yere
gitmelidir

1
@IlmariKaronen Kesinlikle katılıyorum: güvenliği göz ardı ederseniz Sony'ye gidersiniz. Sony, çok büyük olduğu için felaketinden kurtuldu, ancak başka biri muhtemelen FUBAR'a giderdi.
o0 '.

2
@Lohoris. Bundan sonra yalnız bırakacağım, ama bu sony değil. Bu, şimdi ağ oluşturmanın temellerini öğrendiğini söyleyen bir adam. Güvencede olduğunuzu anladıktan sonra güvenliği öğrenin ...
brandon

Evet - bu en iyi cevaptır: oyununuz büyük ölçüde popüler hale gelirse ve güvenlik sorunlarından muzdaripse, her zaman ekstra geliştiriciler vb. Kiralayabilir ve daha güvenli hale getirmek için ağ düzenini yeniden düzenleyebilirsiniz. daha sonra endişelen.
MarkR
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.