Websocket rate limiting

0

Cześć,
część z was może kojarzy Curiosity – What's Inside the Cube? - po krótce chodzi o to, że trzeba zniszczyć kostkę zbudowaną z tysięcy (milionów?) klocków. Klocek niszczy się poprzez kliknięcie na niego. Wszyscy gracze operują na tej samej kostce.
Chciałem zrobić coś wykorzystującego podobną mechanikę. Docelowo działałoby to w przeglądarce i używało websocketów do wysyłania na backend informacji o rozbiciu klocka oraz aktualizowania stanu u każdego połączonego użytkownika. I tu rodzi się moje pytanie - w jaki sposób zabezpieczyć się przed sytuacjami, w których ktoś:

  1. nawiązuje połączenie z moim backendem omijając aplikację i spamuje pakietami, symulując kliknięcia
  2. opali stronę i uruchomi jakieś makro klikające 100 razy na sekundę

Zakładam, że dostęp do strony jest publiczny (nie trzeba mieć konta), więc zwykłe ograniczenie do np. 10 requestów/sekunda na podstawie konta czy sesji średnio zda egzamin, bo ktoś sprytny będzie mógł odpalić 100 przeglądarek i na każdej mógłby wykonywać 10 kliknięc na sekundę.
Ograniczenie po IP też wg mnie nie zda egzaminu, bo wielu ISP daje jeden publiczny adres wielu użytkownikom.
Macie jakieś inne pomysły, być może ktoś ma doświadczenie z podobnym problemem?

0

A nie możesz zrobić OAUTH login i dostępu z kontem Facebook, Google, Twitter? To jest względnie mało wkurzające dla userów, a daje jaką możliwośc kontroli.
Inaczej zawsze zima.

1 użytkowników online, w tym zalogowanych: 0, gości: 1