Требуется ли знание механизмов взлома для MMO?

10

Скажем, я планировал, что в будущем (а не сейчас! Сначала мне нужно многому научиться), желая принять участие в групповом проекте, который собирается создать многопользовательскую онлайн-игру (MMO), и моей работой будет создание сетей часть. Я не очень знаком с сетевым программированием (я прочитал очень простую книгу по PHP, MYSQL и немного разбирался с WAMP ).

Стоит ли изучать хакерство в ходе изучения PHP и MYSQL? Взлом, как при сканировании портов, взлом маршрутизаторов и т. Д. В ММО люди всегда пытаются обмануть, ботов и тому подобное, но худшим сценарием будет взлом базы данных. Это всего лишь мое представление об этом, я действительно не знаю. Я, однако, довольно хорошо разбираюсь в сетях, например, в подсетях / ports / IP (локальных / глобальных) / etc.

По вашему профессиональному мнению, (если вы понимаете тему, просветите меня) Должен ли я узнать об этих вещах, чтобы противостоять возможности этого?

Кроме того, из всего, что я упомянул (сканирование портов, взлом маршрутизатора). Есть ли что-то еще, касающееся взлома, на которое я должен обратить внимание? Я не слишком знаком с вредоносными аспектами / аспектами безопасности сети.

И примечание: я не какой-то ребенок, пытающийся научиться взламывать. Я просто хочу узнать как можно больше, прежде чем поступить в колледж, и мне действительно нужно знать, нужно мне это изучать или нет.

Габриель
источник
10
Написание серверных серверных систем, которые можно масштабировать до чисел, достаточно больших, чтобы их можно было считать «массивными», - это гораздо более серьезная проблема, чем взлом, если вы «не очень знакомы с сетевым программированием». Вы уверены, что пытаетесь создать MMO, а не просто обычную многопользовательскую игру?
1
Я вижу; формулировка вашего вопроса действительно звучит так, будто вы сейчас пытаетесь поработать над этой MMO.
7
Итак, вы не знакомы с сетью, вы планируете делать MMO (что является самым сложным, что вы можете планировать), и вы спрашиваете себя, действительно ли вам нужно научиться защищаться от хакеров. Э - э. Конечно, вы знаете, и вы это знаете. Какой смысл спрашивать это?
о0 '.
2
related, gamedev.stackexchange.com/a/21598/6937 Короткий ответ: если вы когда-либо слышали об итеративной разработке, вы можете взглянуть на обучение таким же образом. Безопасность имеет тенденцию работать как дополнение после факта. Прежде чем делать безопасный MMO-сервер, просто сделайте mmo-сервер. Прежде чем делать это, прочитайте ответ на связанный пост
brandon
1
Это похоже на 14-летнего, который хочет стать президентом, спрашивая, какой галстук лучше всего носить с его будущим костюмом. Этот ребенок, вероятно, не будет президентом, и даже если бы он был, у него были бы более важные проблемы, чем галстук. Скорее всего, вы не сможете создать MMORPG с «групповым проектом», и если у вас возникнут проблемы, гораздо большие, чем эта.
Томас Бонини

Ответы:

16

Да, кто-то (на самом деле, несколько человек) в команде, которая разрабатывает любую многопользовательскую игру, независимо от масштаба, должен обладать глубокими практическими знаниями концепций сетевой безопасности как на аппаратном, так и на программном уровне.

Это особенно актуально для игр, в которых требуется постоянное участие агентства, поскольку это представляет собой инвестицию со стороны игрока и, следовательно, является выгодной целью для хакеров.

Обучение в колледже по сетям / сетевой безопасности / общей безопасности (критография и т. Д.) Поможет вам получить некоторые необходимые базовые знания, чтобы стать одним из вышеупомянутых разработчиков.


источник
11

Знать что-то о безопасности - хорошая идея, прежде чем пытаться написать многопользовательскую игру, но такие вещи, как сканирование портов и взлом роутеров, или даже криптография, не являются тем, на что вы должны обратить внимание на данном этапе.

Скорее, вещи, о которых вы должны узнать, это доверие , проверка и надежность . Знание немного о психологии, особенно о проблемах и наградах, тоже не плохо. Я не могу многому научить вас в таком коротком ответе, как этот, но вот несколько советов, которые помогут вам начать работу с безопасным программированием:

  • Относитесь к любому входу извне вашего прямого контроля, как если бы он мог не соответствовать вашим ожиданиям. Это включает в себя весь пользовательский ввод, все, что вы получаете по сети, и даже что-нибудь из других частей вашей кодовой базы. Постарайтесь не думать о том, что должен содержать ввод , или даже о том, что злоумышленник вместо этого может кормить вас, а просто о том, что ввод может быть, и как безопасно обрабатывать любой возможный ввод, который вы можете получить.

  • Поскольку вы упоминаете PHP и MySQL, начните с рассмотрения внедрения SQL-кода и межсайтовых скриптовых атак. Если вы также знакомы с языками низкого уровня, такими как C, изучите атаки переполнения буфера . Не просто думайте о том, как их предотвратить, подумайте, как бы вы написали свой код, чтобы такие ошибки просто не могли произойти, будь то случайно или со злым умыслом. Ваш язык программирования почти наверняка имеет инструменты, позволяющие вам это делать, если вы просто научитесь использовать их так, как они предназначены.

  • В многопользовательской игре, вероятно, на компьютере игрока будет работать некоторый клиентский код. Привыкайте к мысли, что достаточно умный и решительный пользователь всегда сможет скомпрометировать такой код и заставить его делать то, что он хочет. Не доверяйте клиенту , если вы можете избежать этого. Если вы не можете избежать этого, убедитесь, что доверяете только так, как вам нужно.

  • Старайтесь не класть все яйца в одну корзину. Если вы не можете запустить свою игру, свой веб-сайт и свою базу данных на разных серверах, хотя бы запустите их под разными учетными записями и убедитесь, что ни один из них не имеет больше доступа друг к другу, чем им нужно. Хорошо, может быть, и вашей игре, и вашему сайту нужен доступ к вашей базе данных пользователей, но им, безусловно, не нужен доступ администратора , не так ли? Возможно, им даже не нужно больше, чем доступ только для чтения. По крайней мере, даже если вы сначала не применяете такую ​​строгую компартментализацию, спроектируйте свою игру так, чтобы она могла быть реализована позже - не заставляйте ваш игровой сервер требовать административного доступа к базе данных. Помните, что все программное обеспечение имеет ошибки, и рано или поздно кто- то найти дыру в безопасности в вашем.

В общем, что нужно понимать о безопасности, так это то, что это образ мышления . Речь идет не о знании последних модных слов безопасности, ни о том, как работают последние атаки, ни о попытках предугадать, что хакеры будут делать до того, как они это сделают (хотя все эти вещи могут быть полезны).

На самом деле безопасное программирование - это изучение того, как использовать имеющиеся у вас инструменты так, как они должны были быть использованы, разделение вашего кода на достаточно маленькие части, чтобы вы могли понять, что делает каждый из них (и убедиться, что они делают это правильно, даже если другие части скомпрометированы), и о написании вашего кода ожидать неожиданного. Если вы сделаете все это, вам не нужно будет знать, что могут попробовать хакеры, потому что вы будете готовы ко всему.

Илмари Каронен
источник
8

Лично я бы не стал беспокоиться о хакерах еще .

Смысл прост: вы не получите хакеров / мошенников, пока не станете довольно популярной игрой; т.е. стоит потратить время на взлом / обмануть. Подождите, пока у вас не установится игра, и вы не получите доход для финансирования подобных вещей.

Вы можете потратить много (я имею в виду, много) времени, пытаясь обмануть ваш код, чтобы его нельзя было взломать или обмануть. Или вы можете делать регулярные резервные копии за пределами сайта (что вы должны делать в любом случае) и создавать регулярные точки восстановления. Когда случается эксплойт, закройте его.

corsiKa
источник
1
Хотя я согласен с тем, что создание хорошей игры должно иметь приоритет над созданием безопасной игры , я бы сказал, что некоторая степень осведомленности об общих проблемах безопасности и общих передовых методах полезна с самого начала. В противном случае вы можете оказаться в невыгодном положении, если и когда ваша игра выйдет из строя. Если ваш оригинальный дизайн в основном небезопасен, попытка исправить его позже может быть похожа на борьбу с гидрой: каждый раз, когда вы закрываете одну эксплойт, мошенники находят еще две, и единственным способом остановить это может быть перепроектирование и переписывание значительной части вашего кода с нуля.
Ильмари Каронен
1
@ IlmariKaronen, я согласен в концепции, но не на практике. Учитывая контекст вопроса, они должны сосредоточиться на изучении сетей в целом. Когда вы изучаете сетевое взаимодействие, вы склонны изучать криптографию. Они на начальных этапах. Безопасность важна только тогда, когда вы знаете, что делаете, и создаете что-то, что стоит защитить. Людям, которые задают этот тип вопросов, нужно сначала
найти
1
@IlmariKaronen Я полностью согласен: если вы игнорируете безопасность, вы идете Sony. Sony пережила свою катастрофу только потому, что она была такой большой, но кто-то еще, вероятно, пошел бы FUBAR.
о0 '.
2
@Lohoris. Я оставлю это в покое после этого, но это не Сони. Это парень, который сказал, что только сейчас изучает основы работы в сети. Изучите безопасность, как только вы поймете, что вы
защищаете
Да, это лучший ответ: если ваша игра становится очень популярной и страдает от проблем с безопасностью, вы всегда можете нанять дополнительных разработчиков и т. Д., А также реорганизовать сетевую схему, чтобы сделать ее более безопасной. беспокоиться об этом позже.
MarkR