Considerazioni sulla sicurezza e le prestazioni durante la creazione di un sistema di chat su un backend di Flask

0

Sto costruendo un sito web con il framework Flask. Una funzionalità del sito sarà che gli utenti possono inviare messaggi a vicenda.

Ho creato un prototipo di questo utilizzando Flask WTF form. L'implementazione di base è la seguente:

  1. L'utente atterra sulla pagina di messaggistica e sceglie il destinatario
  2. Javascript rileva quale destinatario l'utente ha scelto
  3. L'utente invia un messaggio tramite il modulo
  4. Il modulo viene gestito dall'endpoint
  5. Il messaggio è memorizzato nel database di back-end

Ecco alcune limitazioni e considerazioni a cui posso pensare:

  • questo sistema non è "live", cioè gli utenti devono aggiornare la pagina per vedere i nuovi messaggi
  • gli utenti non possono vedere se l'altro utente sta scrivendo (non un grosso errore nel mio caso d'uso)
  • capire il destinatario con JS potrebbe avere violazioni della sicurezza (?)
  • un massiccio afflusso di messaggi può far cadere tutto il backend poiché il sistema di messaggistica non è disaccoppiato da esso
  • notifica agli utenti di un nuovo messaggio / messaggio di marcatura come letto dovrà essere fatto tramite JS che potrebbe avere di nuovo implicazioni sulla sicurezza (?)

Come puoi vedere, sono principalmente preoccupato di usare JS per gestirne un po ', dato che non ho molta familiarità con il modo di farlo in modo tale da non poter essere manipolato maliziosamente (ad es. gli utenti che tentano di accedere a messaggi non destinati a loro / inviare messaggi a utenti a cui non è consentito, ecc.)

L'altra preoccupazione è che il sistema non è disaccoppiato.

Dopo aver realizzato questo prototipo, in realtà ho iniziato a pensare di pagare un servizio come Twilio per gestire questa parte del sito, ma mi piacerebbe vedere se riesco a costruirlo da solo.

Quali altri problemi dovrei affrontare e come posso affrontare questi problemi?

    
posta turnip 31.08.2018 - 11:59
fonte

1 risposta

1

OK, quindi questo è un argomento importante e non particolarmente legato a Flask.

i tuoi problemi si suddividono in tre aree

  • autentica l'utente. Quale utente sta inviando questa richiesta?
  • autorizza l'utente. Questo utente può vedere questi messaggi?
  • invia notifiche all'utente.

L'autenticazione e l'autorizzazione devono essere eseguite dal lato server. (sembra che Flask abbia un plugin link )

Le notifiche push richiedono web socket, (sembra che Flask abbia un plugin: link ) e javascript per gestire i messaggi in arrivo e visualizzarli sulla pagina.

Ri: separando la chat dal resto del backend

Questo non è troppo difficile puoi semplicemente avere una webfarm e un URL back-end separati per la chat e ti connetti da javascript.

Il tuo JWT è progettato per questo tipo di richiesta di servizio incrociato, quindi va bene. Potresti avere alcuni requisiti CORS, ma ancora, niente blocchi stradali.

    
risposta data 04.09.2018 - 15:30
fonte

Leggi altre domande sui tag