Come posso proteggere il mio server per garantire che le chiamate di pre-accesso provengano dalla mia app?

1

Possiedo un .NET Web Api che serve un'app mobile basata su Cordova e un front-end Web scritto in AngularJS. Ho fatto un sacco di ricerche e la maggior parte delle fonti non offre una risposta eccezionale o una grande esagerazione per la mia situazione. La sicurezza non è una grande preoccupazione, ma voglio utilizzare una certa quantità di sicurezza di base per garantire che solo la mia app stia effettuando chiamate al mio server.

Tutti gli utenti sono tenuti ad accedere tramite Facebook e non hanno le proprie password per la mia app. Il mio pensiero è stato, finché sono stati autorizzati tramite Facebook e la richiesta è originata dalla mia app, quindi sono a posto.

La domanda è: come posso garantire che la richiesta provenga dalla mia app? Durante l'accesso, invio i token bearer in modo che la parte sia valida, ma per quanto riguarda le chiamate che non richiedono l'autorizzazione? Il problema principale che viene in mente è inviare feedback e moduli di sondaggio, odierà qualcuno che si aggira con quei record. L'opzione migliore che ho trovato sembra essere quella di creare un token crittografato dei parametri di chiamata più un app_secret e allegare alla richiesta. I problemi con quello non potrebbero qualcuno ricreare quello? E poiché il front-end è in Javascript, potrebbero trovare l'app_secret.

1) Come posso proteggere il server per garantire che le chiamate di pre-accesso provengano dalla mia app?

    
posta Joshua Ohana 04.02.2015 - 05:18
fonte

1 risposta

5

In generale, non puoi. Se si desidera eseguire codice sulla macchina di un utente, nulla impedisce a quell'utente di eseguire manualmente le stesse cose stesse. Non è possibile mantenere in modo efficace qualcosa di segreto da un utente motivato e contemporaneamente eseguirlo sul proprio computer; qualsiasi segreto nel codice dell'app è accessibile all'utente. La soluzione è che non ci si può fidare dell'input fornito dall'utente; se è fondamentale che le persone non siano in grado di inviare moduli di feedback con nomi falsi, ad esempio, dovresti avere un segreto specifico dell'utente che non è incorporato nell'app (in modo che un utente non conosca i segreti degli altri utenti, ad esempio un token dell'utente) e utilizzarlo per garantire che le persone siano quelle che dicono di essere.

    
risposta data 04.02.2015 - 07:30
fonte

Leggi altre domande sui tag