Jest to bardziej projekt systemu pytanie / wyzwanie, niż pytanie kodującej.
Zasadniczo, mam na myśli rzucanie razem Bejeweled -esque grę na Facebook używając tylko HTML, CSS i JavaScript. Jest to przede wszystkim z chęci do nauki wszystkie małe zastrzeżenia, o FBJS poprzez niebanalną projektu.
Więc tutaj jest wiele. Przy opracowywaniu na Facebooku, rzeczywiste wywołania API są bardzo drogie; Nie tylko tam jest dodatkowe stanowisko do serwerów Facebooka, istnieje również granica wywołanie API i dławienie się martwić. W skrócie, im mniej połączeń na Facebook lepsze. W połączeniu z harmonogramem obaw nawet ten prosty gra logiczna, i jest dobry powód, aby agresywnie zminimalizować liczbę wywołań zwrotnych w ogóle.
Nie będąc ekspertem w dziedzinie bezpieczeństwa, oto projekt mam wymyślić:
- Osadzić losowych na stronie gry.
- Użyj że materiał siewny stworzyć planszę (jak również dodatkowe elementy, jak jest to konieczne).
- Wykręcanie nasienie (XOR CONCATENATE i hash, coś takiego) po każdym ruchu gracza, w oparciu o czas od ostatniego ruchu. Edit: mam prawdopodobnie także rzeczywisty ruch podjętą mutacji nasienie.
- Po zakończeniu gry zakładać z powrotem następujące: czas rozpoczęcia gry, każdy ruch podjąć i kiedy, a wyniki po stronie klienta.
- Na serwerze, ponownie uruchomić grę z podanych danych, poczytalność sprawdzanie czas rozpoczęcia i przenieść razy, a następnie potwierdzić, że wyniki spotkania.
- Aby złagodzić odmowę usługi, sama gra będzie manipulowane mieć różnicą stanu kolej X.
- Aby zniechęcić serwer używany jako „oracle” sortuje użytkownik delegowania powrotem nieprawidłową grę będą zakazane od jakiegoś czasu stały X (X jest rzędu minut).
Taka konstrukcja wymaga trzech Facebook wezwanie za grą: jeden do przechowywania losowych zanim się gra, jeden sprowadzić go po zakończeniu gry, a jeden zaktualizować wynik gracza, jeśli gra jest ważna.
Co Próbuję dowód system przeciw jest prosto Wyników spoofing ( http: // ... myscore = 999999999 lub podobnym). Chciałbym również, aby złagodzić „patrzeć w przyszłość” ataków, w którym użytkownik może powiedzieć, jakie kawałki idą do tablicy obok. Ataków typu DoS na serwerze hostingowym (zamierzone lub w inny sposób), należy również zapobiegać.
Rzeczywiste pytanie, może ktoś zobaczyć lukę w tym projekcie? Równoważnie, czy istnieje prostszy projekt, który spełnia moje kryteria?
Uwaga: Zdaję sobie sprawę, jak to prawdopodobnie jest zbędny, ale jego pytanie nie mniej interesujący.
Zamierzam spróbować i rzucić kilka liczb tu do dodatkowych wojsk zilustrować moje rozumowanie, są dość szorstki, ale mam nadzieję, że pomocne.
Zakładając planszy 10x10 gry, istnieje potencjalne ruchy ~ 200 (zamiana dwóch sąsiednich elementów), z których większość jest nieprawidłowy. Można powiedzieć, że są średnio 5 prawidłowych ruchów na „włącz”. Jeśli mamy ograniczyć działania gracza do ramy 50 do 30000 milisekund, istnieje 149,750 potencjalnych nowych mieszań dostarczyły Tweaking „algorytm” nie odrzucić bitów; Czuję się pewny, że istnieją co najmniej 10.000 potencjalnych nowych mieszań, które muszą być obliczone przez atakującego przyjmując skrótu kryptograficznego jest używany. Jeśli rzucisz algorytm min-max na tym, drzewo decyzyjne eksploduje bardzo szybko. Rzut wygasania sesji gry na to, powiedzmy 30 minut, i wierzę, że ten atak, ponieważ równoważną złożoności pisaniu mały program bot do odegrania dla was, które nie mogą być bronione przed rozsądnie.













