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.
Réponses:
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
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.
la source
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.
la source