Скажем, я планировал, что в будущем (а не сейчас! Сначала мне нужно многому научиться), желая принять участие в групповом проекте, который собирается создать многопользовательскую онлайн-игру (MMO), и моей работой будет создание сетей часть. Я не очень знаком с сетевым программированием (я прочитал очень простую книгу по PHP, MYSQL и немного разбирался с WAMP ).
Стоит ли изучать хакерство в ходе изучения PHP и MYSQL? Взлом, как при сканировании портов, взлом маршрутизаторов и т. Д. В ММО люди всегда пытаются обмануть, ботов и тому подобное, но худшим сценарием будет взлом базы данных. Это всего лишь мое представление об этом, я действительно не знаю. Я, однако, довольно хорошо разбираюсь в сетях, например, в подсетях / ports / IP (локальных / глобальных) / etc.
По вашему профессиональному мнению, (если вы понимаете тему, просветите меня) Должен ли я узнать об этих вещах, чтобы противостоять возможности этого?
Кроме того, из всего, что я упомянул (сканирование портов, взлом маршрутизатора). Есть ли что-то еще, касающееся взлома, на которое я должен обратить внимание? Я не слишком знаком с вредоносными аспектами / аспектами безопасности сети.
И примечание: я не какой-то ребенок, пытающийся научиться взламывать. Я просто хочу узнать как можно больше, прежде чем поступить в колледж, и мне действительно нужно знать, нужно мне это изучать или нет.
источник
Ответы:
Да, кто-то (на самом деле, несколько человек) в команде, которая разрабатывает любую многопользовательскую игру, независимо от масштаба, должен обладать глубокими практическими знаниями концепций сетевой безопасности как на аппаратном, так и на программном уровне.
Это особенно актуально для игр, в которых требуется постоянное участие агентства, поскольку это представляет собой инвестицию со стороны игрока и, следовательно, является выгодной целью для хакеров.
Обучение в колледже по сетям / сетевой безопасности / общей безопасности (критография и т. Д.) Поможет вам получить некоторые необходимые базовые знания, чтобы стать одним из вышеупомянутых разработчиков.
источник
Знать что-то о безопасности - хорошая идея, прежде чем пытаться написать многопользовательскую игру, но такие вещи, как сканирование портов и взлом роутеров, или даже криптография, не являются тем, на что вы должны обратить внимание на данном этапе.
Скорее, вещи, о которых вы должны узнать, это доверие , проверка и надежность . Знание немного о психологии, особенно о проблемах и наградах, тоже не плохо. Я не могу многому научить вас в таком коротком ответе, как этот, но вот несколько советов, которые помогут вам начать работу с безопасным программированием:
Относитесь к любому входу извне вашего прямого контроля, как если бы он мог не соответствовать вашим ожиданиям. Это включает в себя весь пользовательский ввод, все, что вы получаете по сети, и даже что-нибудь из других частей вашей кодовой базы. Постарайтесь не думать о том, что должен содержать ввод , или даже о том, что злоумышленник вместо этого может кормить вас, а просто о том, что ввод может быть, и как безопасно обрабатывать любой возможный ввод, который вы можете получить.
Поскольку вы упоминаете PHP и MySQL, начните с рассмотрения внедрения SQL-кода и межсайтовых скриптовых атак. Если вы также знакомы с языками низкого уровня, такими как C, изучите атаки переполнения буфера . Не просто думайте о том, как их предотвратить, подумайте, как бы вы написали свой код, чтобы такие ошибки просто не могли произойти, будь то случайно или со злым умыслом. Ваш язык программирования почти наверняка имеет инструменты, позволяющие вам это делать, если вы просто научитесь использовать их так, как они предназначены.
В многопользовательской игре, вероятно, на компьютере игрока будет работать некоторый клиентский код. Привыкайте к мысли, что достаточно умный и решительный пользователь всегда сможет скомпрометировать такой код и заставить его делать то, что он хочет. Не доверяйте клиенту , если вы можете избежать этого. Если вы не можете избежать этого, убедитесь, что доверяете только так, как вам нужно.
Старайтесь не класть все яйца в одну корзину. Если вы не можете запустить свою игру, свой веб-сайт и свою базу данных на разных серверах, хотя бы запустите их под разными учетными записями и убедитесь, что ни один из них не имеет больше доступа друг к другу, чем им нужно. Хорошо, может быть, и вашей игре, и вашему сайту нужен доступ к вашей базе данных пользователей, но им, безусловно, не нужен доступ администратора , не так ли? Возможно, им даже не нужно больше, чем доступ только для чтения. По крайней мере, даже если вы сначала не применяете такую строгую компартментализацию, спроектируйте свою игру так, чтобы она могла быть реализована позже - не заставляйте ваш игровой сервер требовать административного доступа к базе данных. Помните, что все программное обеспечение имеет ошибки, и рано или поздно кто- то найти дыру в безопасности в вашем.
В общем, что нужно понимать о безопасности, так это то, что это образ мышления . Речь идет не о знании последних модных слов безопасности, ни о том, как работают последние атаки, ни о попытках предугадать, что хакеры будут делать до того, как они это сделают (хотя все эти вещи могут быть полезны).
На самом деле безопасное программирование - это изучение того, как использовать имеющиеся у вас инструменты так, как они должны были быть использованы, разделение вашего кода на достаточно маленькие части, чтобы вы могли понять, что делает каждый из них (и убедиться, что они делают это правильно, даже если другие части скомпрометированы), и о написании вашего кода ожидать неожиданного. Если вы сделаете все это, вам не нужно будет знать, что могут попробовать хакеры, потому что вы будете готовы ко всему.
источник
Лично я бы не стал беспокоиться о хакерах еще .
Смысл прост: вы не получите хакеров / мошенников, пока не станете довольно популярной игрой; т.е. стоит потратить время на взлом / обмануть. Подождите, пока у вас не установится игра, и вы не получите доход для финансирования подобных вещей.
Вы можете потратить много (я имею в виду, много) времени, пытаясь обмануть ваш код, чтобы его нельзя было взломать или обмануть. Или вы можете делать регулярные резервные копии за пределами сайта (что вы должны делать в любом случае) и создавать регулярные точки восстановления. Когда случается эксплойт, закройте его.
источник