Czy znajomość mechanizmów hakerskich jest wymagana w MMO?


10

Powiedzmy, że planowałem w przyszłości (nie teraz! Jest wiele rzeczy, które muszę się najpierw nauczyć), chcąc wziąć udział w projekcie grupowym, który miał stworzyć masową grę online dla wielu graczy (mmo), a moją pracą byłoby tworzenie sieci część. Nie znam się na programowaniu sieciowym (przeczytałem bardzo podstawową książkę o PHP, MYSQL i trochę pomieszałem z WAMP ).

Czy podczas studiowania PHP i MYSQL powinienem skupić się na hakowaniu? Hakowanie jak przy skanowaniu portów, hakowanie routerów itp. W MMO ludzie zawsze próbują oszukiwać, boty i tym podobne, ale najgorszym scenariuszem byłoby włamanie się do baz danych. To tylko moja koncepcja tego, naprawdę nie wiem. Rozumiem jednak sieci dość dobrze, takie jak podsieci / porty / adresy IP (lokalne / globalne) / itp.

Według Twojej profesjonalnej opinii (jeśli rozumiesz temat, oświeć mnie) Czy powinienem dowiedzieć się o tych rzeczach, aby przeciwdziałać takiej sytuacji?

Poza tym, o których wspomniałem (skanowanie portów, hakowanie routerów) Czy jest coś jeszcze, co dotyczy hakowania, na które powinienem zwrócić uwagę? Nie znam się zbytnio na złośliwych / zabezpieczających aspektach sieci.

I uwaga: nie jestem dzieckiem próbującym nauczyć się hakować. Chcę się nauczyć jak najwięcej, zanim pójdę na studia, i naprawdę muszę wiedzieć, czy muszę się tego uczyć, czy nie.


10
Pisanie systemów serwerów zaplecza, które można skalować do liczb wystarczająco dużych, aby uznać je za „masywne”, jest o wiele większym problemem niż hakowanie, jeśli „nie znasz się na programowaniu sieciowym”. Czy na pewno próbujesz stworzyć MMO, a nie zwykłą grę wieloosobową?

1
Widzę; sformułowanie twojego pytania naprawdę brzmi, jakbyś próbował teraz pracować nad tym MMO.

7
Nie znasz więc sieci, planujesz zrobić MMO (co jest najtrudniejszą rzeczą, jaką możesz zaplanować) i zadajesz sobie pytanie, czy naprawdę musisz nauczyć się, jak się bronić przed hakerami. Uh Oczywiście, że wiesz i wiesz o tym. Po co o to pytać?
o0 ”.

2
powiązane, gamedev.stackexchange.com/a/21598/6937 Krótka odpowiedź, jeśli kiedykolwiek słyszałeś o iteracyjnym rozwoju, możesz spojrzeć na naukę w ten sam sposób. Bezpieczeństwo zwykle działa jako dodatek po fakcie. Przed stworzeniem bezpiecznego serwera MMO, po prostu stwórz serwer mmo. Zanim to zrobisz, przeczytaj odpowiedź na powiązany post
brandon

1
To jest jak 14-latek, który chce zostać prezydentem i pytać, jaki krawat najlepiej pasuje do jego przyszłego garnituru. Ten dzieciak prawdopodobnie nie będzie prezydentem, a nawet gdyby był, miałby ważniejsze problemy niż remis. Prawdopodobnie nie uda ci się stworzyć MMORPG z „projektem grupowym”, a jeśli masz, masz o wiele większe problemy niż to.
Thomas Bonini,

Odpowiedzi:


16

Tak, ktoś (w rzeczywistości wiele osób) w zespole, który opracowuje dowolną grę wieloosobową, niezależnie od skali, powinien dobrze znać praktyczne koncepcje bezpieczeństwa sieci zarówno na poziomie sprzętowym, jak i programowym.

Jest to szczególnie prawdziwe w przypadku gier, które będą wymagały dużej agresywności, ponieważ stanowi to inwestycję ze strony gracza, a tym samym stanowi lukratywny cel dla hakerów.

Biorąc udział w zajęciach związanych z siecią / bezpieczeństwem sieci / bezpieczeństwem ogólnym (crytography, et cetera) w college'u, pomożesz w uzyskaniu wiedzy niezbędnej do bycia jednym z wyżej wymienionych programistów.


11

Wiedza na temat bezpieczeństwa jest dobrym pomysłem przed napisaniem gry wieloosobowej, ale takie rzeczy jak skanowanie portów i hackowanie routerów, a nawet kryptografia, nie są tym, na co powinieneś zwrócić uwagę na tym etapie.

Zamiast tego powinieneś dowiedzieć się o zaufaniu , walidacji i solidności . Wiedza o psychologii, zwłaszcza o wyzwaniach i nagrodach, nie jest zła. Naprawdę nie mogę się tego wiele nauczyć w krótkiej odpowiedzi, takiej jak ta, ale oto kilka wskazówek, które pomogą rozpocząć bezpieczne programowanie:

  • Traktuj wszelkie dane wejściowe spoza Twojej bezpośredniej kontroli, jakby nie były zgodne z oczekiwaniami. Obejmuje to cały wkład użytkowników, wszystko, co otrzymujesz przez sieć, a nawet wszystko z innych części bazy kodu. Postaraj się nie myśleć o tym, co powinno zawierać dane wejściowe , a nawet o tym, co atakujący mógłby cię w zamian nakarmić, ale po prostu o tym, co może być dane wejściowe i jak bezpiecznie obsługiwać wszelkie możliwe dane wejściowe.

  • Ponieważ wspominasz o PHP i MySQL, zacznij od spojrzenia na iniekcję SQL i ataki typu cross-site scripting . Jeśli znasz również języki niskiego poziomu, takie jak C, przyjrzyj się atakom przepełnienia bufora . Nie myśl tylko o tym, jak im zapobiegać - pomyśl o tym, jak napiszesz swój kod, aby takie błędy po prostu nie mogły się zdarzyć, przypadkowo lub ze złej woli. Twój język programowania prawie na pewno ma narzędzia, które ci to umożliwiają, jeśli tylko nauczysz się korzystać z nich tak, jak powinny.

  • W grze wieloosobowej prawdopodobnie na komputerze gracza działa kod klienta. Przyzwyczaj się do idei, że wystarczająco inteligentny i zdeterminowany użytkownik zawsze będzie w stanie skompromitować taki kod i sprawić, że zrobi to , co chce. Nie ufaj klientowi , jeśli możesz tego uniknąć. Jeśli nie możesz tego uniknąć, upewnij się, że ufasz tylko tak dalece, jak musisz.

  • Staraj się nie wkładać wszystkich jajek do jednego koszyka. Jeśli nie możesz uruchomić gry, witryny i bazy danych na osobnych serwerach, przynajmniej uruchom je na osobnych kontach i upewnij się, że żaden z nich nie ma do siebie dostępu więcej niż potrzebują. OK, może zarówno Twoja gra, jak i witryna potrzebują dostępu do bazy danych użytkowników, ale na pewno nie potrzebują do niej dostępu administracyjnego , prawda? Być może nie potrzebują nawet więcej niż tylko dostępu do odczytu . Przynajmniej, nawet jeśli na początku nie wymuszasz tak ścisłego podziału na przedziały, zaprojektuj swoją grę, aby można ją było wprowadzić później - nie wymagaj od serwera gry dostępu administratora do bazy danych. Pamiętaj, że całe oprogramowanie ma błędy, a wcześniej czy później ktoś to zrobi znajdź dziurę w swoim.

Ogólnie rzecz biorąc, należy pamiętać o bezpieczeństwie, ponieważ jest to sposób myślenia . Nie chodzi o znajomość najnowszych modnych słów bezpieczeństwa ani o to, jak działają najnowsze ataki, ani o próbę przewidzenia, co zrobią hakerzy, zanim to zrobią (chociaż wszystkie te rzeczy mogą się przydać).

Rzeczywiste bezpieczne programowanie polega na nauczeniu się korzystania z narzędzi, które masz tak, jak powinny być używane, na dzieleniu kodu na części wystarczająco małe, abyś mógł zrozumieć, co robi każdy z nich (i upewnić się, że robią to dobrze, nawet jeśli inne części są zagrożone), a także o napisaniu kodu, aby spodziewać się nieoczekiwanego. Jeśli to wszystko zrobisz, nie będziesz musiał wiedzieć, co hakerzy mogą spróbować, ponieważ będziesz przygotowany na wszystko.


8

Osobiście nie martwiłbym się jeszcze o hakerów .

Uzasadnienie jest proste: nie dostaniesz hakerów / oszustów, dopóki nie będziesz dość popularną grą; tj. warto poświęcić czas na hack / cheat. Poczekaj, aż gra zostanie ustanowiona jako pierwsza, a przychody będą przeznaczone na finansowanie tego rodzaju rzeczy.

Możesz spędzić dużo czasu (to znaczy dużo) próbując oszukać kod, którego nie można zhakować ani oszukać. Możesz też wykonywać regularne kopie zapasowe poza siedzibą firmy (które i tak powinieneś robić) i tworzyć regularne punkty przywracania. Kiedy nastąpi exploit, zamknij go.


1
Chociaż zgadzam się, że tworzenie dobrej gry powinno mieć pierwszeństwo przed stworzeniem bezpiecznej , powiedziałbym, że od samego początku dobrze jest mieć pewien stopień świadomości typowych problemów bezpieczeństwa i ogólnych dobrych praktyk. W przeciwnym razie możesz znaleźć się w sytuacji niemożliwej do utrzymania, jeśli i kiedy gra się rozpocznie. Jeśli twój pierwotny projekt jest zasadniczo niepewny, próba załatania go później może być jak walka z hydrą: za każdym razem, gdy zamkniesz jeden exploit, oszuści znajdują jeszcze dwa, a jedynym sposobem na powstrzymanie tego może być przeprojektowanie i przepisanie znacznej części bazy kodu od podstaw.
Ilmari Karonen,

1
@IlmariKaronen, zgadzam się w koncepcji, ale nie w praktyce. Biorąc pod uwagę kontekst pytającego, muszą oni skupić się na nauce sieci w ogóle. Kiedy uczysz się sieci, zwykle uczysz się kryptografii. Są w początkowej fazie. Bezpieczeństwo jest ważne tylko wtedy, gdy wiesz, co robisz i tworzysz coś, co warto zabezpieczyć. Ludzie, którzy zadają tego rodzaju pytania, muszą dotrzeć do miejsca, w którym mogą nawet stworzyć coś, co warto najpierw zabezpieczyć
brandon

1
@IlmariKaronen Całkowicie się zgadzam: jeśli zlekceważysz bezpieczeństwo, pójdziesz do Sony. Sony przeżyło katastrofę tylko dlatego, że była tak duża, ale każdy inny prawdopodobnie wybrałby FUBAR.
o0 ”.

2
@Lohoris. Potem zostawię to w spokoju, ale to nie jest Sony. To facet, który powiedział, że właśnie uczy się podstaw sieci. Naucz się bezpieczeństwa, gdy zrozumiesz, co to jest zabezpieczenie ...
brandon

Tak - to najlepsza odpowiedź: jeśli Twoja gra staje się bardzo popularna i ma problemy z bezpieczeństwem, zawsze możesz zatrudnić dodatkowych programistów itp. I zmienić schemat sieci, aby był bardziej bezpieczny. martw się o to później.
MarkR
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.