Jedná se spíše o návrh systému otázka / úkol, než kódování otázku.
V podstatě, Přemýšlím o házení dohromady Bejeweled esque hra na Facebooku pouze pomocí HTML, CSS a JavaScriptu. Jedná se především z touhy učit se všechny malé nástrahách FBJS přes netriviální projektu.
Takže tady je řešení. Při vývoji pro Facebook, skutečné volání API jsou velmi nákladné; nejenže je tam další POST na serverech Facebook, je tu také limit volání API a škrcení bát. Stručně řečeno, čím méně volání na Facebook, tím lépe. Zkombinujte to s načasováním obavy i tento jednoduchý puzzle hry, a tam je dobrý důvod, aby agresivně minimalizovat počet zpětných volání obecně.
Nebýt bezpečnostní expert, tady je návrh jsem přišel s:
- Vložit náhodný semeno na herní stránku.
- Použít, aby bylo osivo vytvořit herní plán (stejně jako další kusy dle potřeby).
- Vyladit semeno (XOR CONCATENATE a hash, něco na ten způsob) po každém hráč tah, na základě doby od posledního tahu. Edit: Asi bych měla obsahovat i skutečnou tah přijaté v mutaci semeno.
- Po dokončení hru přidat zpět následující: hra čas zahájení, každý tah užívat a kdy, a na straně klienta výsledků.
- Na serveru, znovu spustit hru s uvedenými daty, kontrola rozum čas začátku a přesunout časy, a potvrďte, že zápas výsledky.
- Ke zmírnění odmítnutí služby, bude hra sama o sobě být vylepšený mít vyhrát stavu turn X.
- Odradit server používán jako „Oracle“ svého druhu, bude uživatel vyslání zpět neplatnou hru být zakázán pro nějakou konstantu času X (kde X je řádově minuty).
Tato konstrukce vyžaduje tři Facebook volání za hru hraje: jeden pro uložení hnízdo náhodných čísel, než se hra hraje, kdo ji načíst poté, co hra skončí, a kdo aktualizovat skóre hráče případě, že hra je platný.
Snažím se důkazu systém proti je rovně nahoru skóre spoofing ( http: // ... myscore = 999999999 , nebo podobné). Také bych chtěl zmírnit „dívat dopředu“ útoků, ve kterém může uživatel říci, co kousky přicházejí na palubu další. By měla být rovněž zabráněno popření servisních útoků na hosting server (úmyslné nebo jinak).
Skutečná otázka, někdo může vidět chyby v tomto designu? Ekvivalentně, je tam jednodušší design, který splňuje moje kritéria?
Poznámka: Jsem si vědom toho, jak zbytečné to asi je, ale jeho zajímavá otázka nicméně.
Jdu to zkusit a hodit několik čísel se sem info ilustraci moje úvaha, to jsou docela drsné, ale doufám, že užitečné.
Za předpokladu, že 10x10 herní desce, jsou ~ 200 potenciální pohybuje (Záměna dvou sousedních kusů), z nichž většina je neplatná. Řekněme, že jsou v průměru 5 platných tahů za „turn“. Pokud bychom omezit činnosti hráče k rámu 50 až 30000 milisekund, existuje 149,750 potenciální nové hash poskytované v „vylepšování“ algoritmus není vyřadit bity; Věřím v dejme tomu existují nejméně 10.000 potenciální nové hodnoty hash, které se musí počítat útočník předpokladu šifrovaného bezpečného hash se používá. Pokud hodíte min-max algoritmus na to, vaše rozhodovací strom exploduje velmi rychle. Hodit uplynutí se hra relace na to, řekněme 30 minut, a věřím, že útok, protože ekvivalent ve složitosti k psaní trochu bot program, hrát pro vás, které mohou být rozumně bránil proti.













