1. Lokalny serwer deweloperski powinien jak najmniej różnić się od docelowej maszyny. Ograniczasz w ten sposób testowanie konfiguracji środowiska.
2. Nawet jak lubisz majstrować, nie ma usprawiedliwienia dla kiepskiego (co jest równe braku) filtrowania danych wejściowych. Od podstaw środowisko powinno zakładać ich bezpieczne filtrowanie.
3. Metoda GET nie powinna zmieniać danych na serwerze. To są podstawowe kwestie bezpieczeństwa, tak jak filtrowanie danych. Poczytaj http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html, a w szczególności:
4. CSRF - przy wykonywaniu czynności zmieniających dane na serwerze! To podstawa.
5. Nie musi być generowany losowo. Wystarczy dodatkowe pole podczas rejestracji. I nie można go edytować. Wyobraź sobie, że ktoś zmienia sobie nazwę, a inna osoba rejestruje się o nazwie takiej, jak miała ta osoba. Wówczas jak inni gracze mają rozpoznać, kto jest kto? Takie same zasady jak login, z tym, że nie służy on do uwierzytelniania i autoryzacji. Dzięki temu nie ujawniasz informacji o nazwie użytkownika i potencjalnie trzeba odgadnąć dwie rzeczy, zamiast jednej. A tak mamy listę loginów dostępną publicznie i wystarczy hasło do nich znać (swoją drogą, mam nadzieję, że hasła są hash'owane i czymś lepszym jak md5 czy sha1).
6. Session Hijacking - Przede wszystkim ID sesji powinno być regenerowane po zalogowaniu przy każdym odświeżeniu. Dodatkowo dodaj do sesji sprawdzanie większej ilości rzeczy niż tylko ID sesji. Dodaj np.: nagłówek przeglądarki. Możesz również jakiś niestandardowy cookie ustawiać z generowanym przez Ciebie indywidualnie dla sesji kolejnym ciągiem znaków i go sprawdzać.Wystarczy aby przy tak małej produkcji nikomu nie chciało się tym zajmować.
Ale martwi mnie jedno. Jeżeli przez słowa "napisałem całą grę od postaw" rozumiesz również cały "framework" gry, to jeżeli nie masz:
- ogromnej wiedzy,
- mnóstwo czasu,
- testów jednostkowych,
- testów funkcjonalnych
to szczerze wątpię, abyś sam zapewnił tej grze odpowiedni poziom bezpieczeństwa.
Jeżeli jednak korzystasz ze sprawdzonych komponentów przez Composer czy całości frameworków jak Zend 2, Symfony 2, Laravel etc. to w takim razie nie powinno być problemów z filtrowaniem danych, CSRF, Session Hijacking, XSS czy innym potencjalnymi zagrożeniami. I przede wszystkim z mówieniem "musiałbym wszędzie usunąć loginy". To powinno być tak proste jak zmiana kilku linijek kodu w modelu i widokach.
Może czujesz, że krytykuję i pewnie tak jest. Nie mniej widzę siebie sprzed kilkunastu lat, gdy również stworzyłem kilka gier online (RPG) i gdzie popełniałem takie same błędy. Ale to dobra wprawka do poprawy swoich umiejętności
Powodzenia w tworzeniu i przede wszystkim radości z tego, co robisz