Robimy MMOSG I – Wstęp i research.

 

tldr: Nowa seria – robimy ogame.


Ostatnio dla zabawy próbowałem stworzyć lekki webowy frontend do bazy danych (z losowo wygenerowanymi użytkownikami) przy użyciu JQuery i Spring Boota z MongoDB po stronie serwera. Całkiem i się to spodobało i teraz w głowie mam większy pomysł, czyli stworzenie chociaż najbardziej badziewnego, ale działającego massively multiplayer online strategic game (ogame/plemiona/ikariam etc). Bazy danych + technologie webowe wyglądają znacznie lepiej w parze, jeśli patrzeć pod kątem CV, a wydaje mi się że zasadniczo dobrze jest umieć na jakimś poziomie zwizualizować backend. Zacznijmy więc może od przedstawienia kilku problemów które będą po drodze.

Problemy i research

W jaki sposób serwer będzie wiedział, kiedy może odesłać przeglądarce stronę dostępną tylko dla zalogowanych, a kiedy nie, a bardziej ogólnie: skąd wie, czy użytkownik jest zalogowany?

Z tego co wygooglowałem i sam się domyśliłem, wygląda to tak:

Użytkownik loguje się pomyślnie na stronie (hash hasła z jego formularza pokrywa się z tym w bazie danych), na serwerze zostaje wygenerowany unikatowy token i zapisany w bazie danych razem z adresem IP osoby która się zalogowała a także datą wygaśnięcia tokena. Do tej samej osoby, odsyłany jest token, zapisywany jest w formie ciasteczka, a następnie kiedy tylko ta osoba zażąda strony, która dostępna jest tylko dla zalogowanych, serwer porówna token przesłany z ciasteczek oraz adres IP, jeśli wszystko się zgadza, to odsyła stronę, jeśli nie, redirect na stronę logowania.

Na co warto rzucić okiem:

https://pl.wikipedia.org/wiki/HTTP_cookie

https://blog.risingstack.com/web-authentication-methods-explained/

https://security.stackexchange.com/questions/755/how-does-basic-http-auth-work

http://viralpatel.net/blogs/spring-mvc-cookie-example/ 

http://stackoverflow.com/questions/12050059/user-session-tracking-in-javascript

Trzymanie haseł

Minimum bezpieczeństwa, czyli trzymanie hashy. Samo przesyłanie informacji z przeglądarki na serwer również powinno być jakoś zabezpieczane:

https://stackoverflow.com/questions/4101440/jquery-sending-password-via-ajax

https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29_Prevention_Cheat_Sheet

Wygląd strony

Jestem w tym zielony (nie znam niczego poza CSS, HTML), ale póki co nie przejmuję się tym, frontend wyjdzie po drodze i będę wyszukiwał na bieżąco gdy tylko znajdzie się czas. Co do tego, znalazłem całkiem fajną stronę:

https://uptodate.frontendrescue.org/

Materiały do nauki

Okazuje się, że w sieci jest całkiem sporo opensourcowych klonów Ogame, przykładowa lista:

https://freevps.us/thread-7746.html

W razie problemów, będe zaglądał w kod.


Oczywiście wszystko krok po kroku, zanim dojdziemy do pierwszego prototypu minie czas i jestem świadom że nie zrobię wszystkiego powyższego w jeden weekend.

Gdy zaczniemy pisać kod do tej serii, udostępnię go na moim Githubie:

https://github.com/dbeef


dsp2017-1

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s