O conhecimento dos mecanismos de hackers é necessário para um MMO?


10

Digamos que eu estava planejando, no futuro (agora não! Preciso aprender muito primeiro) procurando participar de um projeto em grupo que criaria um jogo on-line para vários jogadores (mmo), e meu trabalho seria o trabalho em rede parte. Não estou familiarizado com programação de rede (li um livro muito básico sobre PHP, MYSQL e brinquei um pouco com o WAMP ).

No curso de meus estudos de PHP e MYSQL, devo analisar os hackers? Hacking como na verificação de portas, hackers de roteadores etc. Nos MMOs, as pessoas estão sempre tentando enganar, bots e outros, mas o pior cenário seria ter alguém invadindo os bancos de dados. Esta é apenas a minha concepção disso, eu realmente não sei. No entanto, eu entendo muito bem a rede, como sub-redes / portas / IPs (local / global) / etc.

Na sua opinião profissional (se você entende o tópico, me esclareça) Devo aprender sobre essas coisas para combater a possibilidade de isso acontecer?

Além disso, dentre as coisas que mencionei (varredura de portas, invasão de roteadores) Há mais alguma coisa relacionada a invasões que eu deveria investigar? Não estou muito familiarizado com os aspectos maliciosos / de segurança das redes.

E uma observação: eu não sou um garoto tentando aprender a hackear. Eu só quero aprender o máximo possível antes de ir para a faculdade e realmente preciso saber se preciso estudar isso ou não.


10
Escrever sistemas de servidor back-end que podem ser escalados para números grandes o suficiente para serem considerados "maciços" é o problema muito maior para você do que invadir se você "não estiver familiarizado com a programação de rede". Tem certeza de que está tentando criar um MMO e não apenas um jogo multiplayer regular?

1
Eu vejo; o teor da sua pergunta realmente parece que você está tentando trabalhar neste MMO agora.

7
Portanto, você não está familiarizado com redes, planeja fazer um MMO (que é a coisa mais difícil que pode planejar) e se pergunta se realmente precisa aprender a se defender contra hackers. Uh Claro que sim, e você sabe disso. Qual o sentido de perguntar isso?
o0 '.

2
relacionada, gamedev.stackexchange.com/a/21598/6937 Resposta curta, se você já ouviu falar em desenvolvimento iterativo, pode ver o aprendizado da mesma maneira. A segurança tende a funcionar como um complemento após o fato. Antes de fazer um servidor MMO seguro, basta fazer um servidor mmo, antes de fazer isso, leia a resposta para o post ligado
Brandon

1
É como um garoto de 14 anos que quer se tornar presidente, perguntando qual é a gravata mais apropriada para usar em seu futuro terno. Esse garoto provavelmente não será o presidente e, mesmo que fosse, teria problemas mais importantes que o empate. Você provavelmente não criará com sucesso um MMORPG com um "projeto de grupo" e, se tiver, problemas muito maiores que isso.
9788 Thomas Thomini

Respostas:


16

Sim, alguém (de fato, vários membros) da equipe que desenvolve qualquer jogo multiplayer, independentemente da escala, deve ter um forte conhecimento prático dos conceitos de segurança de rede nos níveis de hardware e software.

Isso é especialmente verdadeiro para jogos que envolvem muita persistência de agência, uma vez que isso constitui um investimento por parte do jogador e, consequentemente, é algo que faz um alvo lucrativo para hackers.

Tomar aulas de rede / segurança de rede / segurança geral (criptografia, etc.) na faculdade será útil para fornecer a você alguns dos conhecimentos básicos necessários para ser um desses desenvolvedores mencionados anteriormente.


11

Saber alguma coisa sobre segurança é uma boa ideia antes de tentar escrever um jogo para vários jogadores, mas coisas como varredura de portas e hackers de roteadores, ou mesmo criptografia, não são o que você deve procurar neste estágio.

Em vez disso, você deve aprender sobre confiança , validação e robustez . Saber um pouco sobre psicologia, especialmente sobre desafios e recompensas, também não é uma coisa ruim. Não posso ensinar muito sobre isso em uma resposta curta como esta, mas aqui estão algumas dicas para você começar a programar com segurança:

  • Trate qualquer entrada de fora do seu controle direto como se não fosse o que você esperava. Isso inclui toda a entrada do usuário, tudo o que você recebe pela rede e até qualquer coisa de outras partes da sua base de código. Tente entrar na mentalidade de não pensar no que a entrada deve conter, ou mesmo sobre o que um invasor pode alimentar você, mas simplesmente sobre o que a entrada poderia ser e como lidar com segurança com qualquer entrada possível que você possa obter.

  • Desde que você mencionou o PHP e o MySQL, comece analisando os ataques de injeção de SQL e de script entre sites . Se você também conhece idiomas de baixo nível, como C, analise os ataques de estouro de buffer . Não pense apenas em como evitá-los - pense em como você escreveria seu código para que erros como esse simplesmente não ocorram, seja por acidente ou por maldade. Sua linguagem de programação quase certamente tem as ferramentas para permitir isso, se você aprender a usá-las como pretendem.

  • Em um jogo multiplayer, você provavelmente terá algum código de cliente em execução no computador do jogador. Acostume-se à idéia de que um usuário suficientemente inteligente e determinado sempre poderá comprometer esse código e fazê-lo fazer o que deseja. Não confie no cliente , se puder evitá-lo. Se você não conseguir evitá-lo, confie nele apenas na medida do necessário.

  • Tente não colocar todos os seus ovos em uma cesta. Se você não pode executar seu jogo, seu site e seu banco de dados em servidores separados, pelo menos execute-os em contas separadas e verifique se nenhum deles tem mais acesso um ao outro do que o necessário. OK, talvez seu jogo e seu site precisem acessar o banco de dados de usuários, mas eles certamente não precisam de acesso de administrador , não é? Talvez eles nem precisem mais do que apenas acesso de leitura a ele. Pelo menos, mesmo que você não imponha uma compartimentação tão estrita no começo, projete seu jogo para que ele possa ser instalado mais tarde - não faça com que o servidor do jogo exija acesso de administrador ao banco de dados. Lembre-se de que todo software possui bugs e, mais cedo ou mais tarde, alguém irá encontre uma falha de segurança na sua.

Em geral, o que se deve saber sobre segurança é que é uma mentalidade . Não se trata de conhecer as últimas palavras-chave de segurança, ou de como os ataques mais recentes funcionam ou de tentar antecipar o que os hackers farão antes de fazê-lo (embora todas essas coisas possam ser úteis).

A programação segura real é sobre aprender a usar as ferramentas que você tem do jeito que elas deveriam ser usadas, dividir seu código em pedaços pequenos o suficiente para que você possa entender o que cada um deles faz (e garantir que eles façam o que é certo, mesmo se outras partes estão comprometidas) e sobre como escrever seu código para esperar o inesperado. Se você fizer tudo isso, não precisará saber o que os hackers podem tentar, porque estará preparado para qualquer coisa.


8

Pessoalmente, eu não me preocuparia com hackers ainda .

A lógica é simples: você não receberá hackers / trapaceiros até que seja um jogo bastante popular; ou seja, vale o tempo para hackear / trapacear. Espere até que você estabeleça um jogo primeiro e receba receita para financiar esse tipo de coisa.

Você pode gastar muito (quero dizer, muito) tempo tentando enganar o seu código para que ele não possa ser invadido ou enganado. Ou você pode fazer backups externos regulares (o que você deve fazer de qualquer maneira) e criar pontos de restauração regulares. Quando ocorrer uma exploração, feche-a.


1
Embora eu concorde que fazer um bom jogo deva ter prioridade sobre um jogo seguro , eu diria que é bom ter algum grau de conscientização sobre problemas comuns de segurança e melhores práticas gerais desde o início. Caso contrário, você poderá se encontrar em uma situação insustentável se e quando o jogo decolar. Se o seu design original é fundamentalmente inseguro, tentar consertá-lo mais tarde pode ser como combater uma hidra: toda vez que você fecha uma exploração, os trapaceiros encontram mais duas, e a única maneira de impedir isso é redesenhar e reescrever uma fração substancial da sua base de código a partir do zero.
Ilmari Karonen

1
@IlmariKaronen, concordo em conceito, mas não em prática. Dado o contexto do solicitante, eles precisam se concentrar no aprendizado de redes em geral. Quando você aprende redes, você tende a aprender sobre criptografia. Eles estão nos estágios iniciais. A segurança é importante apenas quando você sabe o que está fazendo e cria algo que vale a pena proteger. Pessoas que pedem este tipo de necessidade questão para chegar onde eles podem até mesmo criar algo digno de garantir primeiro
Brandon

1
@IlmariKaronen Concordo totalmente: se você desconsiderar a segurança, irá à Sony. A Sony sobreviveu ao seu desastre só porque era muito grande, mas provavelmente qualquer outra pessoa teria ido a FUBAR.
o0 '.

2
@Lohoris. Vou deixar em paz depois disso, mas isso não é Sony. Esse é um cara que disse que agora está aprendendo o básico sobre redes. Saiba de segurança uma vez que você entender o que é que você está garantindo ...
Brandon

Sim - esta é a melhor resposta: se o seu jogo se tornar bastante popular e sofrer de problemas de segurança, você sempre poderá contratar desenvolvedores extras, etc., e refatorar seu esquema de rede para torná-lo mais seguro. se preocupe com isso mais tarde.
precisa saber é
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.