Informazioni sulla protezione per azioni importanti sul server

1

Sviluppiamo un servizio web. E abbiamo bisogno che le nostre azioni importanti (ad esempio il trasferimento di denaro) siano protette da chiamate accidentali. In frontend chiediamo all'utente di confermare tali azioni. Ok.

Ma come prevenire le chiamate accidentali in caso di errore dello sviluppatore?

È una buona idea che quell'azione richieda un token di conferma dallo sviluppatore per procedere?

    
posta The Architect 12.03.2014 - 13:51
fonte

3 risposte

4

Un servizio web non dovrebbe forzare le decisioni relative all'interfaccia utente su un'applicazione consumante (non più di quanto deve). La conferma delle azioni dell'utente è una decisione dell'interfaccia utente.

Inoltre, non imponi realmente nulla forzando una fase di conferma. Se lo sviluppatore di applicazioni consumer desidera, possono semplicemente confermare automaticamente. Tutto quello che stai facendo è rendere più difficile il consumo, in ogni caso.

Se tu, come fornitore di API, vuoi imporre una decisione sull'interfaccia utente a un utente API, è abbastanza giusto. Ma dovrebbe essere fatto tramite una combinazione di termini e condizioni, un commutatore di uccisione dei consumatori e una fase di verifica preventiva (ad esempio, non approveremo l'accesso all'API di produzione finché non avremo visto l'applicazione).

    
risposta data 12.03.2014 - 15:04
fonte
2

Se stai esponendo il tuo servizio web agli sviluppatori di applicazioni di terze parti, posso pensare a due scenari in cui un'API critica può essere chiamata senza il consenso dell'utente (date le tue linee guida sull'interfaccia utente):

  1. Un bug nel codice
  2. Sviluppatore di terze parti malintenzionato, utilizzando in modo errato l'API

Contro l'utilizzo non sindacato, quello che posso suggerire è fornire ai tuoi sviluppatori di terze parti le chiavi API , che sarà necessario per emettere la chiamata API critica.

In questo modo, puoi proteggere la tua applicazione dall'uso illecito dell'API, nonché tracciare quali terze parti hanno effettuato la chiamata, per essere in grado di rintracciare comportamenti sospetti.

Per quanto riguarda i bug nel codice, sono più complicati, dal momento che non esiste un modo programmatico per prevenirli. Una possibile soluzione potrebbe essere quella di avere una conferma in due fasi (cioè inviare una mail all'utente, con un link di conferma, che deve fare clic per completare la transazione), o (forse più user-friendly, ma potrebbe non essere possibile , a seconda del servizio) una mail con un link annulla transazione , per evitare transazioni accidentali dopo il fatto.

    
risposta data 12.03.2014 - 18:26
fonte
0

Se ritieni che sia necessaria la conferma, puoi fare in modo che i tuoi servizi critici richiedano un token con timestamp e richiedere al chiamante di ottenere un token da te immediatamente prima di richiamare il servizio. Lascia scadere il token con un paio di secondi (il TTL effettivo dovrebbe essere determinato dopo aver misurato la latenza). Sono d'accordo con pdr, però, non è un buon modello di design.

    
risposta data 12.03.2014 - 15:18
fonte

Leggi altre domande sui tag