Pemain dalam game MMO biasanya dapat mengirim pesan melalui saluran yang berbeda (pribadi, publik, guild, dan lain-lain).
Bagaimana saya mengirim dan menyimpan data ini untuk mencegah pengguna luar agar tidak dapat mengakses pesan obrolan pribadi seseorang? Haruskah saya menyimpan data dalam log permainan sementara, atau database?
Jawaban:
Anda tidak akan pernah benar-benar menghilangkan kemampuan pihak luar untuk mencegat paket obrolan dari klien, dan Anda tidak perlu terlalu khawatir, karena ketika Anda membangun MMO Anda sedang membangun permainan, bukan kekuatan industri platform obrolan yang aman secara kriptografi.
Anda harus menerapkan pesan obrolan sebagai berikut:
Titik paling rawan di sini adalah transmisi klien ke server awal. Jika seseorang mengintip paket-paket itu, mereka dapat melihat pesan yang secara teknis tidak ditujukan untuk mereka. Anda bisa mengenkripsi data, tetapi itu banyak usaha hanya untuk mendapatkan minimal. Klien harus dapat mendekripsi paket obrolan pada akhirnya, dan mencegat paket ketika mereka meninggalkan klien akan menjadi tempat terbaik untuk melakukan pengintaian tersebut, sehingga kunci sudah tersedia untuk pengintai, hanya sedikit lebih sulit untuk menemukan.
Sangat penting bagi Anda untuk melewati obrolan Anda melalui server yang Anda kendalikan. Tidak perlu server game, ini bisa menjadi server khusus untuk menyalurkan obrolan, tetapi Anda ingin mengontrol peruteannya. Ini memungkinkan Anda untuk mengawasi perselisihan GM, memungkinkan Anda menegakkan permintaan pengguna untuk memblokir atau membisukan pengguna lain, itu memecahkan masalah yang mungkin Anda miliki dengan meninju NAT atau gangguan jaringan lainnya yang dapat Anda coba lakukan peer-to-peer chat, dan itu memberikan cukup penghalang untuk peretasan biasa (yang cenderung untuk diajak mengobrol) untuk menyelesaikan 90% masalah keamanan. Yang kira-kira sama baiknya dengan yang Anda dapatkan.
sumber
Jujur saya tidak 100% yakin apa yang Anda minta. Namun semoga yang berikut ini bermanfaat.
Jika Anda melihat planeshift , sebuah MMO open-source, Anda dapat melihat kode mereka dan melihat bagaimana mereka memutuskan untuk merancang sistem mereka. Ini tidak akan memberi Anda wawasan yang tepat tentang semua MMO tetapi implementasi yang paling mungkin serupa di berbagai game.
Berikut ini beberapa petunjuk untuk mengunduh sumbernya. Anda harus memeriksanya melalui SVN
Saya telah melihat dan jika Anda masuk
src/client/gui/
Anda akan melihat kelas ChatWindow. Mengurus mengirim pesan kembali dan keempat ke server untuk mengobrol dan juga mengurus riwayat masukan. Sepertinya mereka mengemas informasi dan mengirimkannya ke server untuk dikirimkan. Jadi saya membayangkan informasi obrolan ini disimpan di server mereka dan dengan demikian tidak dapat dijangkau oleh sembarang orang. Itu kecuali Anda bisa masuk ke database server untuk mengakses catatan obrolan. Saya tidak bisa membayangkan mereka bisa menjaga semuanya juga. Jika mereka menyimpan log obrolan, mungkin hanya untuk jangka waktu tertentu (Beberapa hari mungkin?)Pokoknya, jawaban luas untuk pertanyaan luas. Saya benar-benar tidak bisa berbuat lebih baik dari itu tanpa pertanyaan yang lebih fokus. Jangan ragu untuk berkomentar jika Anda memiliki pertanyaan yang lebih sempit dan saya dapat mencoba menjawabnya.
Sunting1: Juga perhatikan bahwa di folder klien, Anda dapat menemukan dan mengautentikasi kelas klien. Ini menangani otentikasi klien, dll. Saya kira itu juga akan menangani keamanan terkait obrolan dalam hal mengautentikasi dirinya ke server obrolan. Mereka mungkin tidak memiliki server khusus untuk mengobrol. Jadi bisa saja server game yang juga menjalankan layanan obrolan untuk semua kliennya. Ini adalah sesuatu yang bisa Anda pahami dengan benar-benar mempelajari kode.
Untuk MMO yang lebih besar saya akan menaruh uang pada mereka memiliki server obrolan khusus hanya untuk mengurus obrolan antar pemain. (Sama seperti yang mereka lakukan untuk contoh).
sumber
Kebanyakan MMO yang saya mainkan tidak menyimpan pesan untuk periode waktu yang lebih lama. Karena itu kemungkinan besar akan mengubah mereka menjadi GameCompany dengan lencana negatif seperti NSA. Kecuali, para pemain memiliki akses langsung ke database mereka.
Runescape memiliki pesan yang disimpan dalam cache, dan hanya tersedia untuk jumlah waktu yang kecil. Saya belum pernah mendengar ada yang dilarang karena fakta bahwa data tersebut telah disimpan. Jika seseorang harus melaporkan permainan lain untuk apa yang dia katakan. Dia harus cepat, hingga batas obrolan 500 ~ line-nya habis. Setelah itu semua pesannya akan dihapus. Di tempat yang paling ramai, di mana para pemain saling berteriak satu sama lain hingga 10 detik.
Pesan selalu dikirim melalui server, dan penyimpanan terjadi di server bukan klien. Jika tidak, Pemain A yang meretas klien, akan dapat memanipulasi susunan yang bertanggung jawab untuk obrolan dan secara harfiah menulis bahwa PEMAIN B menulis sesuatu yang lain. Setelah beberapa saat ia dapat melaporkan bahwa pemain untuk menulis sesuatu dan cache pemain lain mungkin tidak lagi menyimpan info tersebut.
Jika Anda menyimpan pesan di CLIENT, yang dilakukan oleh portal obrolan GaduGadu.pl, pengguna akan kehilangan kemampuan untuk memeriksa obrolan mereka di PC yang berbeda. Data yang dihasilkan oleh pengguna akan rentan terhadap orang ketiga. Sebagian besar di kafe internet publik. Atau di rumah teman yang mungkin membalas dendam pada teman lamanya.
Jika Anda menyimpannya di server Anda, Player B tidak mungkin mengakses data Player A dan sebaliknya. Perlu diingat bahwa mengatakan "bisakah pemain B mengakses data" adalah pertanyaan yang luas. Anda tidak akan pernah tahu apakah datanya aman, kecuali server Anda luring! Berikut ini sebuah contoh.
sumber
Menyimpan pesan hanya diperlukan untuk pengiriman ketika Anda ingin mengirimkannya di lain waktu. Misalnya ketika Anda ingin mengizinkan orang mengirim pesan ke pemain yang offline yang dikirim saat mereka masuk berikutnya atau ketika Anda ingin mengizinkan admin untuk membaca obrolan di lain waktu.
Ketika Anda tidak membutuhkan ini, penanganan obrolan dapat dan harus dilakukan sepenuhnya di memori.
Setiap pesan obrolan yang dikirim klien harus menyertakan beberapa informasi tentang penerima (publik, serikat, pesan pribadi ke pemain X). Server kemudian harus menentukan karakter yang diizinkan membaca pesan:
Pesan kemudian harus dikirim ke klien yang mengontrol karakter ini.
Mengirim pesan ke klien yang tidak seharusnya menunjukkannya kepada pengguna adalah pemborosan lalu lintas dan melanggar prinsip "jangan pernah mempercayai klien".
sumber