La connaissance des mécanismes de piratage est-elle requise pour un MMO?

10

Disons que je prévoyais, à l'avenir (pas maintenant! Il y a beaucoup de choses que je dois d'abord apprendre) à participer à un projet de groupe qui allait faire un jeu en ligne massivement multijoueur (mmo), et mon travail serait le réseautage portion. Je ne suis pas très familier avec la programmation réseau (j'ai lu un livre très basique sur PHP, MYSQL et j'ai un peu brouillé avec WAMP ).

Au cours de mes études de PHP et MYSQL, dois-je me pencher sur le piratage? Piratage comme dans le scan de port, le piratage de routeur, etc. Dans les MMO, les gens essaient toujours de tricher, les bots et autres, mais le pire scénario serait d'avoir quelqu'un pirater les bases de données. C'est juste ma conception de cela, je ne sais vraiment pas. Cependant, je comprends assez bien la mise en réseau, comme les sous-réseaux / ports / IP (local / global) / etc.

À votre avis professionnel, (Si vous comprenez le sujet, éclairez-moi) Dois-je en apprendre davantage sur ces choses afin de contrer la possibilité que cela se produise?

En outre, parmi les choses que j'ai mentionnées (analyse de port, piratage de routeur) Y a-t-il autre chose concernant le piratage que je devrais examiner? Je ne connais pas trop les aspects malveillants / sécurité des réseaux.

Et une note: je ne suis pas un gamin essayant d'apprendre à pirater. Je veux juste apprendre autant que possible avant d'aller à l'université et j'ai vraiment besoin de savoir si j'ai besoin d'étudier cela ou non.

Gabriel
la source
10
Écrire des systèmes de serveurs principaux qui peuvent évoluer vers des nombres suffisamment grands pour être considérés comme «massifs» est le plus gros problème pour vous que le piratage si vous n'êtes «pas familier avec la programmation réseau». Êtes-vous sûr que vous essayez de créer un MMO et pas seulement un jeu multijoueur régulier?
1
Je vois; le libellé de votre question donne vraiment l'impression que vous essayez de travailler sur ce MMO maintenant.
7
Donc, vous n'êtes pas familier avec le réseautage, vous prévoyez de faire un MMO (ce qui est la chose la plus difficile à planifier) ​​et vous vous demandez si vous avez vraiment besoin d'apprendre à vous défendre contre les pirates. Euh. Bien sûr que oui, et vous le savez. Quel est l'intérêt de demander cela?
o0 '.
2
related, gamedev.stackexchange.com/a/21598/6937 Réponse courte, si vous avez déjà entendu parler du développement itératif, vous pouvez envisager l'apprentissage de la même manière. La sécurité a tendance à fonctionner comme un complément après coup. Avant de créer un serveur MMO sécurisé, créez simplement un serveur MMO, Avant de faire cela, lisez la réponse au post
brandon
1
C'est comme un jeune de 14 ans qui veut devenir président en lui demandant quelle cravate la plus appropriée porter avec son futur costume. Cet enfant ne sera probablement pas le président, et même s'il l'était, il aurait des problèmes plus importants que la cravate. Vous ne réussirez probablement pas à créer un MMORPG avec un "projet de groupe", et si vous le faites, vous avez des problèmes bien plus importants que cela.
Thomas Bonini

Réponses:

16

Oui, quelqu'un (en fait, plusieurs corps) dans l'équipe qui développe n'importe quel jeu multijoueur, quelle que soit son échelle, devrait avoir une solide connaissance pratique des concepts de sécurité réseau au niveau matériel et logiciel.

Cela est particulièrement vrai pour les jeux qui impliqueront beaucoup de persistance d'agence, car cela constitue un investissement de la part du joueur et, par conséquent, quelque chose qui fait une cible lucrative pour les pirates.

Prendre des cours de réseautage / sécurité de réseau / sécurité générale (cryptographie, et cetera) au collège vous sera utile pour vous donner certaines des connaissances de base requises pour être l'un de ces développeurs susmentionnés.


la source
11

Connaître quelque chose sur la sécurité est une bonne idée avant d'essayer d'écrire un jeu multijoueur, mais des choses comme la numérisation de port et le piratage de routeur, ou même la cryptographie, ne sont pas ce que vous devriez étudier à ce stade.

Au contraire, les choses que vous devez apprendre sont la confiance , la validation et la robustesse . Connaître un peu la psychologie, en particulier les défis et les récompenses, n'est pas non plus une mauvaise chose. Je ne peux pas vraiment vous en apprendre beaucoup dans une réponse courte comme celle-ci, mais voici quelques conseils pour vous aider à démarrer avec une programmation sécurisée:

  • Traitez toute entrée extérieure à votre contrôle direct comme si elle ne correspondait pas à vos attentes. Cela inclut toutes les entrées utilisateur, tout ce que vous recevez sur le réseau et même tout ce qui provient d'autres parties de votre base de code. Essayez de ne pas penser à ce que l'entrée devrait contenir, ni même à ce qu'un attaquant pourrait vous nourrir à la place, mais simplement à ce que l'entrée pourrait être et comment gérer en toute sécurité toute entrée possible que vous pourriez obtenir.

  • Puisque vous mentionnez PHP et MySQL, commencez par examiner les attaques par injection SQL et de script intersite. Si vous êtes également familier avec les langages de bas niveau comme C, examinez les attaques de dépassement de tampon . Ne pensez pas seulement à la façon de les empêcher - pensez à la façon dont vous écririez votre code afin que de telles erreurs ne puissent tout simplement pas se produire, que ce soit par accident ou par malveillance. Votre langage de programmation a presque certainement les outils pour vous permettre de le faire, si vous apprenez simplement à les utiliser comme ils sont censés le faire.

  • Dans un jeu multijoueur, vous aurez probablement un code client en cours d'exécution sur l'ordinateur du joueur. Habituez-vous à l'idée qu'un utilisateur suffisamment intelligent et déterminé sera toujours en mesure de compromettre un tel code et de le faire faire ce qu'il veut. Ne faites pas confiance au client , si vous pouvez l'éviter. Si vous ne pouvez pas l'éviter, assurez-vous de ne lui faire confiance que dans la mesure du nécessaire.

  • Essayez de ne pas mettre tous vos œufs dans le même panier. Si vous ne pouvez pas exécuter votre jeu, votre site Web et votre base de données sur des serveurs distincts, exécutez-les au moins sous des comptes distincts et assurez-vous qu'aucun d'entre eux n'a plus accès les uns aux autres que nécessaire. OK, peut-être que votre jeu et votre site Web ont besoin d'accéder à votre base de données d'utilisateurs, mais ils n'ont sûrement pas besoin d'un accès administrateur, n'est-ce pas ? Peut-être qu'ils n'ont même pas besoin de plus qu'un accès en lecture seule . Au moins, même si vous n'appliquez pas un compartimentage aussi strict au départ, concevez votre jeu de manière à ce qu'il puisse être mis en place plus tard - ne faites pas de votre serveur de jeu un accès administrateur à la base de données. Rappelez - vous que tous les logiciels ont des bogues, et tôt ou tard quelqu'un volonté trouver une faille de sécurité dans la vôtre.

En général, la chose à réaliser à propos de la sécurité est que c'est un état d'esprit . Il ne s'agit pas de connaître les derniers mots à la mode en matière de sécurité, ni de savoir comment fonctionnent les dernières attaques ou d'essayer d'anticiper ce que les pirates vont faire avant de le faire (bien que toutes ces choses puissent être utiles).

La véritable programmation sécurisée consiste à apprendre à utiliser les outils dont vous disposez comme prévu, à diviser votre code en morceaux suffisamment petits pour que vous puissiez comprendre ce que chacun d'eux fait (et à vous assurer qu'ils le font correctement, même si d'autres parties sont compromises), et sur l'écriture de votre code pour vous attendre à l'inattendu. Si vous faites tout cela, vous n'aurez pas besoin de savoir ce que les pirates pourraient essayer, car vous serez prêt à tout.

Ilmari Karonen
la source
8

Personnellement, je ne m'inquiéterais pas encore des hackers .

La justification est simple: vous n'obtiendrez pas de pirates / tricheurs tant que vous n'êtes pas un jeu assez populaire; c'est-à-dire vaut le temps de pirater / tricher. Attendez que vous ayez créé un jeu en premier et que des revenus viennent financer ce genre de choses.

Vous pouvez passer beaucoup de temps (je veux dire, beaucoup de temps) à essayer de prouver que votre code ne peut pas être piraté ou triché. Ou vous pouvez faire des sauvegardes hors site régulières (ce que vous devriez faire de toute façon) et créer des points de restauration réguliers. Lorsqu'un exploit se produit, fermez-le.

corsiKa
la source
1
Bien que je convienne que la création d'un bon jeu doit avoir la priorité sur la création d'un jeu sécurisé , je dirais qu'il est bon d'avoir un certain degré de sensibilisation aux problèmes de sécurité courants et aux meilleures pratiques générales dès le départ. Sinon, vous pourriez vous retrouver dans une situation intenable si et quand votre jeu prend son envol. Si votre conception d'origine est fondamentalement peu sûre, essayer de la réparer plus tard peut être comme combattre une hydre: chaque fois que vous fermez un exploit, les tricheurs en trouvent deux autres, et la seule façon de l'arrêter peut être de repenser et de réécrire une fraction substantielle de votre base de code à partir de zéro.
Ilmari Karonen
1
@IlmariKaronen, je suis d'accord dans le concept, mais pas dans la pratique. Étant donné le contexte du demandeur, ils doivent se concentrer sur l'apprentissage du réseautage en général. Lorsque vous apprenez le réseautage, vous avez tendance à en apprendre davantage sur la cryptographie. Ils sont au début. La sécurité n'est importante qu'une fois que vous savez ce que vous faites et que vous créez quelque chose qui mérite d'être sécurisé. Les personnes qui posent ce type de question doivent se rendre là où elles peuvent même créer quelque chose qui mérite d'être sécurisé en premier
brandon
1
@IlmariKaronen Je suis totalement d'accord: si vous ne respectez pas la sécurité, vous irez chez Sony. Sony a survécu à son désastre juste parce qu'il était si grand, mais n'importe qui d'autre serait probablement devenu FUBAR.
o0 '.
2
@Lohoris. Je vais le laisser tranquille après ça, mais ce n'est pas sony. C'est un gars qui a dit qu'il venait d'apprendre les rudiments du réseautage. Apprenez la sécurité une fois que vous comprenez ce que vous sécurisez ...
brandon
Oui - c'est la meilleure réponse: si votre jeu devient massivement populaire et souffre de problèmes de sécurité, vous pouvez toujours embaucher des développeurs supplémentaires, etc., et remanier son schéma de réseau pour le rendre plus sécurisé. vous en soucier plus tard.
MarkR