Apakah pengetahuan tentang mekanisme peretasan diperlukan untuk MMO?


10

Katakanlah saya berencana, di masa depan (tidak sekarang! Ada banyak yang harus saya pelajari terlebih dahulu) ingin berpartisipasi dalam proyek grup yang akan membuat game online multiplayer besar-besaran (mmo), dan pekerjaan saya adalah jaringan bagian. Saya tidak begitu terbiasa dengan pemrograman jaringan (saya sudah membaca buku yang sangat mendasar tentang PHP, MYSQL dan saya sedikit mengacaukan WAMP ).

Dalam proses belajar PHP dan MYSQL, haruskah saya melihat peretasan? Meretas seperti pada pemindaian port, peretasan router, dll. Dalam MMO, orang selalu mencoba menipu, bot, dan sebagainya, tetapi skenario terburuknya adalah seseorang meretas basis data. Ini hanya konsepsi saya tentang ini, saya benar-benar tidak tahu. Namun saya mengerti jaringan dengan cukup baik, seperti subnetting / ports / IP (lokal / global) / dll.

Menurut pendapat profesional Anda, (Jika Anda memahami topiknya, beri tahu saya) Perlukah saya mempelajari hal-hal ini untuk menghadapi kemungkinan terjadinya hal ini?

Juga, dari hal-hal yang saya sebutkan (port scanning, peretasan router) Apakah ada hal lain yang berhubungan dengan peretasan yang harus saya perhatikan? Saya tidak terlalu terbiasa dengan aspek jahat / Keamanan dalam Jaringan.

Dan sebuah catatan: Saya bukan anak kecil yang mencoba belajar cara meretas. Saya hanya ingin belajar sebanyak mungkin sebelum kuliah, dan saya benar-benar perlu tahu apakah saya perlu belajar ini atau tidak.


10
Menulis sistem server back-end yang dapat menskala ke angka yang cukup besar untuk dianggap "besar" adalah masalah yang jauh lebih besar bagi Anda daripada meretas jika Anda "tidak terbiasa dengan pemrograman jaringan." Apakah Anda yakin Anda mencoba membuat MMO dan bukan hanya permainan multipemain biasa?

1
Saya melihat; kata-kata dari pertanyaan Anda benar-benar membuatnya terdengar seperti Anda sedang mencoba mengerjakan MMO ini sekarang.

7
Jadi, Anda tidak terbiasa dengan jaringan, Anda berencana untuk melakukan MMO (yang merupakan hal tersulit yang dapat Anda rencanakan), dan Anda bertanya pada diri sendiri apakah Anda benar-benar perlu belajar cara mempertahankan diri dari peretas. Uh. Tentu saja Anda tahu, dan Anda tahu itu. Apa gunanya bertanya itu?
o0 '.

2
terkait, gamedev.stackexchange.com/a/21598/6937 Jawaban singkat, jika Anda pernah mendengar tentang pengembangan berulang, Anda dapat melihat belajar dengan cara yang sama. Keamanan cenderung berfungsi sebagai tambahan setelah fakta. Sebelum membuat server MMO yang aman, buat saja server mmo, Sebelum melakukan itu, bacalah jawaban untuk postingan yang terhubung
brandon

1
Ini seperti seorang anak berusia 14 tahun yang ingin menjadi presiden menanyakan dasi apa yang paling tepat untuk dikenakan dengan jas masa depannya. Bocah itu mungkin bukan presiden, dan kalaupun dia jadi dia akan memiliki masalah yang lebih penting daripada dasi. Anda mungkin tidak akan berhasil membuat MMORPG dengan "proyek grup", dan jika Anda melakukannya, Anda memiliki masalah yang jauh lebih besar dari ini.
Thomas Bonini

Jawaban:


16

Ya, seseorang (pada kenyataannya, beberapa sistem) di tim yang mengembangkan game multipemain apa pun, terlepas dari skala, harus memiliki pengetahuan yang kuat tentang konsep keamanan jaringan baik di tingkat perangkat keras maupun perangkat lunak.

Ini terutama berlaku untuk gim yang akan melibatkan banyak kegigihan agensi, karena itu merupakan investasi dari pemain dan akibatnya adalah sesuatu yang membuat target yang menguntungkan bagi peretas.

Mengambil kelas jaringan / keamanan jaringan / keamanan umum (kriptografi, dan lain-lain) di perguruan tinggi akan sangat membantu dalam memberikan Anda beberapa latar belakang pengetahuan yang diperlukan untuk menjadi salah satu pengembang tersebut.


11

Mengetahui sesuatu tentang keamanan adalah ide yang baik sebelum mencoba menulis permainan multi-pemain, tetapi hal-hal seperti pemindaian port dan peretasan router, atau bahkan kriptografi, bukanlah yang seharusnya Anda perhatikan pada tahap ini.

Sebaliknya, hal-hal yang harus Anda pelajari adalah kepercayaan , validasi , dan kekokohan . Mengetahui sedikit tentang psikologi, terutama tentang tantangan dan penghargaan, bukanlah hal yang buruk juga. Saya benar-benar tidak bisa mengajari Anda banyak hal dalam jawaban singkat seperti ini, tetapi berikut adalah beberapa tips untuk Anda mulai dengan pemrograman aman:

  • Perlakukan input apa pun dari luar kendali langsung Anda seolah-olah itu tidak seperti yang Anda harapkan. Itu termasuk semua input pengguna, apa pun yang Anda terima melalui jaringan, dan bahkan apa pun dari bagian lain dari basis kode Anda. Cobalah untuk masuk ke dalam pola pikir tidak berpikir tentang apa yang input harus mengandung, atau bahkan tentang apa yang penyerang mungkin memberi makan Anda malah, tetapi hanya tentang apa yang input bisa mungkin terjadi dan cara aman menangani masukan yang mungkin Anda mungkin mendapatkan.

  • Karena Anda menyebutkan PHP dan MySQL, mulailah dengan melihat injeksi SQL dan serangan skrip lintas situs . Jika Anda juga terbiasa dengan bahasa tingkat rendah seperti C, lihat serangan buffer overflow . Jangan hanya berpikir tentang cara mencegahnya - pikirkan bagaimana Anda akan menulis kode Anda sehingga kesalahan seperti itu tidak bisa terjadi, baik secara kebetulan atau melalui kedengkian. Bahasa pemrograman Anda hampir pasti memiliki alat untuk membiarkan Anda melakukan itu, jika Anda baru belajar menggunakannya sebagaimana mestinya.

  • Dalam gim multi-pemain, Anda mungkin akan menjalankan beberapa kode klien di komputer pemain. Terbiasa dengan gagasan bahwa pengguna yang cukup cerdas dan bertekad akan selalu dapat kompromi kode tersebut dan membuatnya melakukan apa yang mereka inginkan. Jangan percayai klien , jika Anda bisa menghindarinya. Jika Anda tidak dapat menghindarinya, pastikan untuk hanya memercayainya sejauh yang Anda perlukan.

  • Usahakan untuk tidak menaruh semua telur Anda dalam satu keranjang. Jika Anda tidak dapat menjalankan game, situs web, dan basis data di server yang berbeda, setidaknya jalankan di bawah akun yang berbeda, dan pastikan tidak ada satu pun dari mereka yang memiliki akses lebih banyak satu sama lain daripada yang mereka butuhkan. Oke, mungkin gim dan situs web Anda memerlukan akses ke basis data pengguna Anda, tetapi mereka tentu saja tidak memerlukan akses admin untuk itu, bukan? Mungkin mereka bahkan tidak memerlukan lebih dari sekedar akses baca saja . Paling tidak, bahkan jika Anda tidak menerapkan kompartementalisasi seketat itu untuk memulai, rancang game Anda sehingga dapat diterapkan nanti - jangan membuat server game Anda memerlukan akses admin ke database. Ingat bahwa semua perangkat lunak memiliki bug, dan cepat atau lambat seseorang akan melakukannya temukan celah keamanan di hatimu.

Secara umum, hal yang harus disadari tentang keamanan adalah bahwa itu adalah pola pikir . Ini bukan tentang mengetahui kata kunci keamanan terbaru, atau tentang bagaimana serangan terbaru bekerja atau tentang mencoba mengantisipasi apa yang akan dilakukan peretas sebelum mereka melakukannya (walaupun semua hal itu mungkin ada gunanya).

Pemrograman yang benar-benar aman adalah tentang mempelajari cara menggunakan alat yang Anda miliki dengan cara yang seharusnya digunakan, tentang membagi kode Anda menjadi potongan-potongan yang cukup kecil sehingga Anda dapat memahami apa yang mereka lakukan (dan memastikan mereka melakukannya dengan benar, bahkan jika bagian lain dikompromikan), dan tentang menulis kode Anda untuk mengharapkan yang tak terduga. Jika Anda melakukan semua itu, Anda tidak perlu tahu peretas apa yang mungkin mencoba, karena Anda akan siap untuk apa pun.


8

Secara pribadi, saya tidak akan khawatir tentang hacker belum .

Alasannya sederhana: Anda tidak akan mendapatkan peretas / penipu sampai Anda permainan yang cukup populer; yaitu sepadan dengan waktu untuk hack / cheat. Tunggu hingga Anda memiliki gim yang didirikan terlebih dahulu dan pendapatan masuk untuk mendanai hal-hal semacam itu.

Anda dapat menghabiskan banyak waktu (maksud saya, banyak) waktu untuk mengelabui pembuktian kode Anda agar tidak dapat diretas atau ditipu. Atau Anda bisa melakukan pencadangan di luar kantor (yang seharusnya Anda lakukan) dan membuat titik pemulihan reguler. Ketika eksploitasi terjadi, tutuplah.


1
Sementara saya setuju bahwa membuat permainan yang baik harus diprioritaskan daripada membuat permainan yang aman , saya akan mengatakan bahwa beberapa tingkat kesadaran akan masalah keamanan umum dan praktik terbaik umum sudah baik untuk dimiliki sejak awal. Kalau tidak, Anda mungkin menemukan diri Anda dalam situasi yang tidak dapat dipertahankan jika dan saat gim Anda lepas landas. Jika desain asli Anda pada dasarnya tidak aman, mencoba menambalnya nanti mungkin seperti melawan hydra: setiap kali Anda menutup satu exploit, para cheater menemukan dua eksploit, dan satu-satunya cara untuk menghentikannya adalah mendesain ulang dan menulis ulang sebagian kecil basis kode Anda dari awal.
Ilmari Karonen

1
@IlmariKaronen, saya setuju dalam konsep, tetapi tidak dalam praktik. Mengingat konteks si penanya, mereka perlu fokus mempelajari jaringan secara umum. Ketika Anda belajar jaringan Anda cenderung belajar tentang kriptografi. Mereka berada di tahap awal. Keamanan hanya penting setelah Anda tahu apa yang Anda lakukan dan Anda menciptakan sesuatu yang layak diamankan. Orang-orang yang mengajukan pertanyaan jenis ini perlu sampai ke tempat mereka bahkan dapat menciptakan sesuatu yang layak diamankan terlebih dahulu
brandon

1
@IlmariKaronen Saya sangat setuju: jika Anda mengabaikan keamanan Anda akan pergi Sony. Sony telah selamat dari bencana hanya karena itu sangat besar, tetapi siapa pun kemungkinan besar akan menjadi FUBAR.
o0 '.

2
@ Lohoris. Saya akan membiarkannya sendiri setelah ini, tetapi ini bukan sony. Ini adalah seorang pria yang mengatakan dia baru saja mempelajari dasar-dasar jaringan. Pelajari keamanan begitu Anda memahami apa yang Anda dapatkan ...
brandon

Ya - ini adalah jawaban terbaik: jika game Anda menjadi sangat populer dan menderita masalah keamanan, Anda selalu dapat mempekerjakan pengembang tambahan dll, dan memperbaiki skema jaringannya untuk membuatnya lebih aman. khawatirkan nanti.
MarkR
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.