È necessaria la conoscenza dei meccanismi di hacking per un MMO?


10

Diciamo che stavo pianificando, in futuro (non ora! C'è molto che devo imparare prima) cercando di partecipare a un progetto di gruppo che stava per fare un gioco online multiplayer (mmo), e il mio lavoro sarebbe il networking porzione. Non ho molta familiarità con la programmazione di rete (ho letto un libro molto semplice su PHP, MYSQL e ho fatto un po ' casino con WAMP ).

Nel corso del mio studio su PHP e MYSQL, dovrei esaminare l'hacking? Hacking come nella scansione delle porte, nell'hacking del router, ecc. Negli MMO le persone cercano sempre di imbrogliare, bot e simili, ma lo scenario peggiore sarebbe che qualcuno hackerasse i database. Questa è solo la mia idea di ciò, davvero non lo so. Capisco comunque il networking abbastanza bene, come sottorete / porte / IP (locale / globale) / ecc.

Secondo la tua opinione professionale, (se capisci l'argomento, illuminami) Dovrei conoscere queste cose per contrastare la possibilità che ciò accada?

Inoltre, tra le cose che ho menzionato (scansione delle porte, hacking del router) c'è qualcos'altro che riguarda l'hacking che dovrei esaminare? Non ho troppa familiarità con gli aspetti dannosi / di sicurezza della rete.

E una nota: non sono un bambino che cerca di imparare a hackerare. Voglio solo imparare il più possibile prima di andare al college e ho davvero bisogno di sapere se devo studiare questo o no.


10
Scrivere sistemi server back-end in grado di scalare fino a numeri sufficientemente grandi da essere considerati "massicci" è il problema molto più grande per te che l'hacking se non hai "familiarità con la programmazione di rete". Sei sicuro di provare a creare un MMO e non solo un normale gioco multiplayer?

1
Vedo; la formulazione della tua domanda sembra davvero che tu stia cercando di lavorare su questo MMO ora.

7
Quindi, non hai familiarità con la rete, prevedi di fare un MMO (che è la cosa più difficile che puoi pianificare) e ti chiedi se hai davvero bisogno di imparare a difenderti dagli hacker. Uh. Certo che lo sai, e lo sai. A che serve chiederlo?
o0 '.

2
correlate, gamedev.stackexchange.com/a/21598/6937 Risposta breve, se hai mai sentito parlare di sviluppo iterativo, puoi guardare l'apprendimento allo stesso modo. La sicurezza tende a funzionare come aggiunta dopo il fatto. Prima di creare un server MMO sicuro, crea un server mmo, Prima di farlo, leggi la risposta al post collegato
brandon

1
È come un 14enne che vuole diventare presidente chiedendo qual è la cravatta più adatta da indossare con il suo abito futuro. Quel ragazzo probabilmente non sarà il presidente, e anche se lo fosse avrebbe problemi più importanti della cravatta. Probabilmente non riuscirai a creare un MMORPG con un "progetto di gruppo" e, se lo fai, avrai problemi molto più grandi di questo.
Thomas Bonini

Risposte:


16

Sì, qualcuno (in effetti, alcuni somebodies) nel team che sviluppa qualsiasi gioco multiplayer, indipendentemente dalle dimensioni, dovrebbe avere una solida conoscenza operativa dei concetti di sicurezza della rete sia a livello hardware che software.

Ciò è particolarmente vero per i giochi che implicano molta persistenza nell'agire, dal momento che ciò costituisce un investimento da parte del giocatore e di conseguenza è qualcosa che rende un obiettivo redditizio per gli hacker.

Prendere lezioni di networking / sicurezza di rete / sicurezza generale (citografia, ecc.) Al college sarà utile per darti alcune delle conoscenze di base necessarie per essere uno di questi sviluppatori sopra menzionati.


11

Sapere qualcosa sulla sicurezza è una buona idea prima di provare a scrivere un gioco multiplayer, ma cose come la scansione delle porte e l'hacking del router, o persino la crittografia, non sono ciò che dovresti esaminare in questa fase.

Piuttosto, le cose che dovresti conoscere sono la fiducia , la convalida e la solidità . Conoscere un po 'di psicologia, specialmente di sfide e ricompense, non è neanche una cosa negativa. Non posso davvero insegnartene molto in una breve risposta come questa, ma ecco alcuni suggerimenti per iniziare con una programmazione sicura:

  • Tratta qualsiasi input esterno al tuo controllo diretto come se non fosse quello che ti aspetti. Ciò include tutto l'input dell'utente, tutto ciò che ricevi sulla rete e persino qualsiasi cosa proveniente da altre parti della tua base di codice. Cerca di entrare nella mentalità di non pensare a ciò che l'input dovrebbe contenere, o anche a ciò che un attaccante potrebbe nutrirti invece, ma semplicemente su quale potrebbe essere l'input e su come gestire in modo sicuro qualsiasi possibile input che potresti ottenere.

  • Dato che menzioni PHP e MySQL, inizia osservando gli attacchi SQL injection e cross-site scripting . Se hai familiarità anche con linguaggi di basso livello come C, cerca gli attacchi buffer overflow . Non pensare solo a come prevenirli - pensa a come scrivere il tuo codice in modo che errori del genere semplicemente non possano accadere, sia per caso che per malizia. Il tuo linguaggio di programmazione ha quasi certamente gli strumenti per permetterti di farlo, se impari a usarli come dovrebbero.

  • In una partita multiplayer, avrai presumibilmente un codice client in esecuzione sul computer del giocatore. Abituati all'idea che un utente sufficientemente intelligente e determinato sarà sempre in grado di compromettere tale codice e farlo fare quello che vuole. Non fidarti del cliente , se puoi evitarlo. Se non puoi evitarlo, assicurati di fidarti solo di quanto devi.

  • Cerca di non mettere tutte le uova nello stesso paniere. Se non riesci a eseguire il tuo gioco, il tuo sito Web e il tuo database su server separati, almeno eseguili con account separati e assicurati che nessuno di essi abbia più accesso reciproco del necessario. OK, forse sia il tuo gioco che il tuo sito web hanno bisogno di accedere al tuo database utente, ma sicuramente non hanno bisogno dell'accesso di amministratore ad esso, vero? Forse non hanno nemmeno bisogno di altro oltre all'accesso in sola lettura . Almeno, anche se per prima cosa non imponi una compartimentazione così rigida, progetta il tuo gioco in modo che possa essere messo in atto in un secondo momento - non fare in modo che il tuo server di gioco richieda l' accesso come amministratore al database. Ricorda che tutto il software ha dei bug e prima o poi qualcuno lo farà trova un buco nella sicurezza nel tuo.

In generale, la cosa da capire sulla sicurezza è che è una mentalità . Non si tratta di conoscere le ultime parole d'ordine di sicurezza, o di come funzionano gli ultimi attacchi o di cercare di anticipare cosa faranno gli hacker prima che lo facciano (anche se tutte queste cose potrebbero essere utili).

La vera programmazione sicura riguarda l'apprendimento di come utilizzare gli strumenti nel modo in cui dovevano essere utilizzati, la divisione del codice in parti sufficientemente piccole da poter comprendere ciò che ciascuno di essi fa (e assicurarsi che lo facciano bene, anche se altre parti sono compromesse) e sulla scrittura del codice si aspettano imprevisti. Se lo fai, non avrai bisogno di sapere cosa potrebbero provare gli hacker, perché sarai pronto a tutto.


8

Personalmente, non mi preoccuperei ancora degli hacker .

La logica è semplice: non avrai hacker / imbroglioni finché non sarai un gioco abbastanza popolare; vale a dire vale la pena di hackerare / barare. Attendi fino a quando non hai stabilito un gioco prima e entrate per finanziare questo tipo di cose.

Puoi passare molto (intendo, molto) tempo cercando di imbrogliare il tuo codice perché non possa essere hackerato o imbrogliato. Oppure potresti fare backup regolari fuori sede (cosa che dovresti comunque fare) e creare punti di ripristino regolari. Quando si verifica un exploit, chiudilo.


1
Anche se concordo sul fatto che creare un buon gioco dovrebbe avere la priorità rispetto a crearne uno sicuro , direi che un certo grado di consapevolezza delle problematiche di sicurezza comuni e delle migliori pratiche generali è positivo fin dall'inizio. Altrimenti potresti trovarti in una situazione insostenibile se e quando il gioco decolla. Se il tuo progetto originale è fondamentalmente insicuro, provare a rattopparlo in un secondo momento può essere come combattere un'idra: ogni volta che chiudi un exploit, i truffatori ne trovano altri due, e l'unico modo per fermarlo potrebbe essere quello di ridisegnare e riscrivere una frazione sostanziale della tua base di codice da zero.
Ilmari Karonen

1
@IlmariKaronen, concordo sul concetto, ma non in pratica. Dato il contesto del richiedente, devono concentrarsi sull'apprendimento delle reti in generale. Quando impari a creare reti, tendi a conoscere la crittografia. Sono nelle fasi iniziali. La sicurezza è importante solo quando sai cosa stai facendo e crei qualcosa che vale la pena proteggere. Le persone che pongono questo tipo di domanda devono arrivare dove possono persino creare qualcosa che valga la pena proteggere prima
brandon

1
@IlmariKaronen Sono pienamente d'accordo: se non si tiene conto della sicurezza, si passerà alla Sony. Sony è sopravvissuta al suo disastro solo perché era così grande, ma chiunque altro sarebbe probabilmente diventato FUBAR.
o0 '.

2
@Lohoris. Lascerò da solo dopo questo, ma questo non è sony. Questo è un tizio che ha detto che proprio ora sta imparando le basi del networking. Impara la sicurezza una volta capito cosa stai proteggendo ...
Brandon

Sì, questa è la risposta migliore: se il tuo gioco diventa molto popolare e soffre di problemi di sicurezza, puoi sempre assumere sviluppatori extra ecc. E riformattare il suo schema di rete per renderlo più sicuro. preoccuparsene più tardi.
Mark
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.