Чи потрібні знання механізмів злому для ММО?


10

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

Під час мого вивчення PHP та MYSQL я повинен розглянути злом? Злом, як у скануванні портів, взломах маршрутизаторів тощо. У ММО люди завжди намагаються обдурити, ботів і таке інше, але найгіршим сценарієм буде те, щоб хтось зламав бази даних. Це лише моє уявлення про це, я насправді не знаю. Однак я розумію мережу досить добре, як підмережа / порти / IP-адреси (локальні / глобальні) / тощо.

На вашу професійну думку, (якщо ви розумієте тему, просвітліть мене) Чи повинен я дізнатися про ці речі, щоб протистояти можливості цього трапитися?

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

І зауваження: я не якась дитина, яка намагається навчитися ламати. Я просто хочу навчитися якомога більше, перш ніж піти до коледжу, і мені справді потрібно знати, чи потрібно мені це вчитися чи ні.


10
Написання бек-серверних систем, які можуть масштабуватись до чисел, досить великих, щоб вважатись "масовими", є для вас набагато більшою проблемою, ніж злом, якщо ви "не такі знайомі з мережевим програмуванням". Ви впевнені, що намагаєтеся зробити MMO, а не просто звичайну багатокористувацьку гру?

1
Розумію; Формулювання вашого запитання справді звучить так, ніби ви намагаєтесь працювати над цим MMO зараз.

7
Отже, ви не знайомі з мережами, ви плануєте робити MMO (це найскладніше, що ви можете запланувати), і ви запитуєте себе, чи справді вам потрібно навчитися захищатися від хакерів. Ага. Звичайно, ти це робиш, і ти це знаєш. Який сенс це запитати?
o0 '.

2
пов'язана, gamedev.stackexchange.com/a/21598/6937 Коротка відповідь, якщо ви коли-небудь чули про ітеративний розвиток, ви можете подивитися на навчання таким же чином. Безпека, як правило, працює як доповнення після факту. Перш ніж зробити захищений сервер MMO, просто зробіть mmo-сервер. Перш ніж це зробити, прочитайте відповідь на пов’язаний пост
брендон

1
Це як 14-річний, який хоче стати президентом, запитуючи, який найбільш підходящий краватку носити у своєму майбутньому костюмі. Цей хлопець, ймовірно, не буде президентом, і навіть якби він був, у нього були б важливіші проблеми, ніж краватка. Напевно, ви не зможете успішно створити MMORPG з "груповим проектом", і якщо у вас виникнуть набагато більші проблеми, ніж це.
Томас Боніні

Відповіді:


16

Так, хтось (насправді, кілька тел) в команді, яка розробляє будь-яку гру для багатьох гравців, незалежно від масштабу, повинен володіти міцними робочими знаннями щодо мережевих концепцій безпеки як на апаратному, так і на програмному рівні.

Особливо це стосується ігор, які передбачають велику наполегливість агентства, оскільки це становить інвестиції з боку гравця і, отже, це щось, що робить вигідну ціль для хакерів.

Здійснення занять мережевою / мережевою безпекою / загальною безпекою (критографія та ін.) В коледжі буде корисним для надання вам деяких необхідних базових знань, щоб бути одним із зазначених розробників.


11

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

Швидше, те, про що слід дізнатися, - це довіра , валідація та надійність . Знати трохи про психологію, особливо про виклики та нагороди - теж не погано. Я не можу насправді навчити вас багато чого з короткої відповіді, як це, але ось кілька порад, щоб розпочати роботу із безпечним програмуванням:

  • Ставтесь до будь-яких вкладів, що знаходяться поза вашим безпосереднім контролем, так, ніби це може бути не те, що ви очікуєте. Це включає в себе всі дані користувачів, все, що ви отримуєте по мережі, і навіть що-небудь з інших частин вашої кодової бази. Постарайтеся , щоб в мисленні не думати про те , що вхід повинен містити, або навіть про те, що зловмисник може годувати вас замість цього, а просто про те, що вхід може можливо бути і як безпечно обробляти будь-який можливий внесок ви могли б отримати.

  • Оскільки ви згадуєте PHP та MySQL, почніть з перегляду ін'єкцій SQL та атак міжсайтового сценарію . Якщо ви також знайомі з мовами низького рівня, такими як C, вивчіть атаки переповнення буфера . Не думайте просто про те, як їх запобігти - подумайте, як би ви написали свій код, щоб подібні помилки просто не траплялися, випадково чи зловмисно. У вашій мові програмування майже напевно є інструменти, які дозволять вам це робити, якщо ви просто навчитесь ними користуватися, як вони призначені.

  • У багатокористувацькій грі, напевно, на комп’ютері гравця буде працювати якийсь код клієнта. Звикайте з думкою, що досить розумний і рішучий користувач завжди зможе поставити під загрозу такий код і змусити його робити те, що вони хочуть. Не довіряйте клієнту , якщо ви зможете цього уникнути. Якщо ви не можете цього уникнути, переконайтеся, що довіряєте йому лише наскільки це потрібно.

  • Намагайтеся не класти всі яйця в один кошик. Якщо ви не можете запустити свою гру, веб-сайт та свою базу даних на окремих серверах, принаймні запускайте їх під окремими обліковими записами та переконайтесь, що жоден з них не має більше доступу один до одного, ніж потрібно. Гаразд, можливо, і вашій грі, і вашому веб-сайту потрібен доступ до вашої бази даних користувачів, але їм точно не потрібен доступ адміністратора , чи не так? Можливо, їм навіть не потрібно більше, ніж лише читати доступ до нього. Принаймні, навіть якщо ви не застосуєте настільки суворої відділення для початку, спроектуйте свою гру так, щоб її можна було встановити пізніше - не змушуйте ваш ігровий сервер вимагати доступу адміністратора до бази даних. Пам'ятайте, що все програмне забезпечення має помилки, і рано чи пізно хтось зробить це знайти дірку в безпеці у вашому.

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

Фактичне безпечне програмування - це навчитися користуватися інструментами, якими ви користувалися, про поділ свого коду на шматки, досить малі, щоб ви могли зрозуміти, що робить кожен з них (і переконайтесь, що вони це роблять правильно, навіть якщо інші частини компрометовані) і про написання коду очікуйте несподіваного. Якщо ви все це зробите, вам не потрібно буде знати, що можуть спробувати хакери, адже ви будете готові до всього.


8

Особисто я б не став турбуватися про хакерів ще .

Обґрунтування просте: ви не отримаєте хакерів / шахраїв, поки не будете досить популярною грою; тобто варто витратити час на злом / обман. Зачекайте, поки у вас буде створена перша гра, і прибуток надійде для фінансування таких речей.

Ви можете витратити багато (я маю на увазі, багато) часу, намагаючись обдурити доказ свого коду, щоб його не можна було зламати чи обдурити. Або ви могли б робити регулярні резервні копії за межами сайтів (що ви все одно повинні робити) та створювати регулярні точки відновлення. Коли відбудеться подвиг, закрийте його.


1
Хоча я погоджуюся, що створення хорошої гри має мати пріоритет над безпечним , але я б сказав, що деяку ступінь обізнаності щодо загальних проблем безпеки та загальних найкращих практик добре мати з самого початку. В іншому випадку ви можете опинитися в непереборній ситуації, якщо і коли гра все-таки злети. Якщо ваш оригінальний дизайн є принципово невпевненим, спроба наклеїти його пізніше може бути як битися з гідрою: щоразу, коли ви закриваєте один експлуатувач, шахраї знаходять ще два, і єдиним способом зупинити його може бути перепроектування та перезапис значної частини вашої кодової бази з нуля.
Ільмарі Каронен

1
@IlmariKaronen, я згоден у концепції, але не на практиці. З огляду на контекст запитувача, їм потрібно зосередитися на навчанні мережах взагалі. Коли ви навчаєтесь мережам, ви, як правило, дізнаєтесь про криптографію. Вони на початкових етапах. Безпека важлива лише після того, як ви дізнаєтеся, чим займаєтесь, і створили щось, що варто забезпечити. Людям, які задають такий тип запитань, потрібно дістатися до місця, де вони можуть створити щось, що варто спочатку забезпечити
Брендон

1
@IlmariKaronen Я повністю згоден: якщо ви нехтуєте безпекою, ви перейдете на Sony. Sony пережила свою катастрофу лише тому, що вона була такою великою, але будь-хто інший, ймовірно, пішов би FUBAR.
o0 '.

2
@Lohoris Я залишу його в спокої після цього, але це не соні. Це хлопець, який сказав, що тільки зараз вивчає основи мереж. Дізнайтеся про безпеку, як тільки зрозумієте, що це таке, що ви забезпечуєте ...
Брендон

Так - це найкраща відповідь: якщо ваша гра стає масово популярною і страждає від проблем із безпекою, ви завжди можете найняти додаткових розробників тощо, і переробляти її мережеву схему, щоб зробити її більш захищеною. переживайте про це пізніше.
MarkR
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.