2015-01-17 14 views
5

Sono nuovo di analizzare, e hanno una domanda circa la sicurezza dei dati nella parse "tavolo" per l'utente. Voglio memorizzare ulteriori dati insieme ai dati dell'utente. Ad esempio, numero di telefono. Per impostazione predefinita, parse imposta la tabella utente in modo che abbia accesso in lettura per chiunque. Quindi, se qualcuno ha appena fatto il mio apice, sarà in grado di ottenere un elenco di tutti gli utenti e dei loro numeri di telefono. Ovviamente questo non è molto sicuro. Quindi dovrei impostare gli oggetti utente in modo che non possano essere letti da nessuno? O dovrei memorizzare i miei dettagli in una tabella diversa? Correlato, penso anche che sia strano per chiunque solo essere in grado di scaricare fondamentalmente anche tutte le colonne predefinite dei miei utenti. In questo momento chiunque abbia la mia chiave API può ottenere tutti gli utenti e i loro indirizzi email. Mi manca qualcosa qui su quanto sia insicuro questo?Parse oggetto User ACL

+0

Suggerirei di memorizzare i dati privati ​​in altra classe e associare l'oggetto con un utente specifico. – eth3lbert

+0

Hai mai trovato una risposta per questo? So che la classe utente ha una sicurezza predefinita, ma la tua domanda di poter scaricare tutti i nomi utente e gli indirizzi email è preoccupante se possibile. Documento sicurezza utente: https://parse.com/docs/ios_guide#users-security/iOS –

+0

No. Non ho mai avuto una risposta definitiva. Ancora alle prese con il modo migliore per gestire questo. Indovina l'opzione migliore è solo iniziare a giocare con le impostazioni. Ho notato che è possibile decollare il debito e trovare le autorizzazioni per l'oggetto utente, ma anche cambiando quelle lascia le autorizzazioni della cartella solo sulle righe dell'utente effettivo. quindi eventuali autorizzazioni esistenti a livello di articolo sembrano non essere interessate. Per me, potrebbe essere ok perché non ho ancora utenti reali. Ma quello potrebbe essere un problema reale per un'app già consolidata. – TehOne

risposta

2

Mi c'è voluto del tempo per avvolgere la mia testa intorno a questo. Per i principianti, si desidera disabilitare la creazione di nuove classi e quindi impostare l'ACL su base per classe (al massimo) solo di sola lettura. Potresti anche voler disattivare la lettura.

Vedi https://parse.com/docs/data#security-classes

Quindi è necessario impostare alcuni ruoli e utenti e impostare ACL in modo appropriato. Non è possibile impostare ACL/ruoli/utenti in modo efficace tramite il browser dati, ma è necessario farlo a livello di programmazione. Ho utilizzato l'API REST e alcuni frammenti di ricciolo per sperimentare.

Vedi https://parse.com/docs/rest#roles

+1

Grazie, ma penso di capire la sicurezza dell'analisi in generale. La mia domanda è stata in particolare chiedendo consigli sulla tabella utente incorporata. – TehOne

+0

Penso che il requisito dell'autorizzazione GET sia causa di grattacapi per coloro che vogliono proteggere gli indirizzi e-mail degli utenti. – fatuhoku

7

Le vostre preoccupazioni sono abbastanza validi. Le autorizzazioni predefinite per il database Parse sono configurate per un facile sviluppo , quindi senza ulteriori configurazioni sua quasi banale per chiunque di discarica di tutti gli utenti. È spiacevole che la sicurezza reale richieda uno sforzo abbastanza significativo quando diverse impostazioni predefinite avrebbero immediatamente reso più sicure molte applicazioni.

Vedi questo post del blog per un esempio di come sia facile un dump utente può essere: https://www.webniraj.com/2013/08/01/using-the-parse-javascript-sdk-be-careful/

ACL Il per-oggetto non può fornire l'accesso che è stata negata dalle autorizzazioni di livello di classe, quindi, anche se non si vuole tutti i dati utente accessibili al pubblico, le autorizzazioni a livello di classe pubblica per la necessità Parse classe User per essere configurati in modo che permette ai SDK di interagire con loro:

  • pubblica “get" è necessario per il cliente per poter refre sh l'utente corrente.
  • "Crea" pubblico è necessario solo per poter registrare un utente.
  • "Aggiornamento" pubblico è necessario per poter impostare nome utente e password.

Queste autorizzazioni pubbliche vengono ulteriormente limitate con l'ACL dell'utente. Alla classe utente incorporata viene assegnato un ACL predefinito con lettura pubblica e readwrite privato (per l'utente specifico). Non ho avuto bisogno di un pubblico Leggi letto per gli utenti, quindi in un hook di AfterSave Cloud Code, ho cambiato l'ACL in privato readwrite. In realtà non volevo nemmeno un accesso privato in scrittura poiché stavo per utilizzare Cloud Code per gli aggiornamenti degli utenti, ma l'ACL tornava sempre a readwrite privato.

Non ho avuto bisogno della possibilità di cercare altri utenti, quindi ho disabilitato il pubblico "Trova", che è la soluzione rapida per impedire che tutte le tue informazioni utente vengano scaricate. Anche se meno rischioso e che richiede l'ID oggetto specifico, il pubblico "Get" potrebbe ancora essere abusato, motivo per cui ho rimosso la lettura pubblica dall'ACL dell'utente.

UPDATE:

Configurazione delle autorizzazioni a livello di classe (CLPS) per consentire al pubblico le operazioni non significano necessariamente tutti i dati sono accessibili al pubblico. Questi CLP specificano quali operazioni possono essere eseguite su ogni classe del database da qualsiasi SDK client (che è ciò che intendono per "pubblico" - l'uso della chiave master "privata" può comunque ignorare tutto). Quindi, gli ACL su ciascun oggetto specificano quale utenti/ruoli sono autorizzati a leggere e scrivere l'oggetto mi raccomando la lettura di loro in 5 parti post del blog sulla sicurezza di acquisire una comprensione delle interazioni tra i CLP, e gli ACL livello di oggetto:. Parse Blog: Security

CLP consentono per bloccare l'accesso del client a intere classi nel database, ad esempio, ho una classe utilizzata solo dal codice cloud, quindi ho disabilitato tutti i CLP (impedendo a qualsiasi SDK del client di leggere o scrivere questi oggetti) e quindi il codice cloud usa la chiave master per sovrascrivere il CLP per l'uso sul server. Ho anche client-facing, ma oggetti privati ​​per l'utente. Trova CLP, ma sono protetti per l'utente con un ACL di lettura/scrittura privato solo per quell'utente.

Parse anche aggiunto “puntatore permesso” di recente, che sembrano utili a limitare l'accesso al “proprietario” di ogni oggetto, ma non ho usato personalmente questi: Parse Pointer Permissions

+0

Sei sicuro che le autorizzazioni pubbliche Ricevi, Crea, Aggiorna siano necessarie per _User? Se così Parse sembra lasciarti andare nei guai in termini di sicurezza, incoraggiando in primo luogo le e-mail da utilizzare come nomi utente e quindi richiedendo che _Gli utenti siano pubblici Get-able. Ciò significa che se un utente è associato, ad esempio, a un "messaggio", quindi semplicemente dicendo "include ('utente') 'è possibile ottenere anche l'e-mail dell'utente. Sto cercando disperatamente di rendere _User il più privato possibile. Ma non sembra che sia una buona idea! – fatuhoku

+0

Ho scritto un problema su ParseUI qui: https://github.com/ParsePlatform/ParseUI-iOS/issues/200 – fatuhoku

+0

@fatuhoku Aggiornato con una spiegazione estesa dell'interazione CLP e ACL. –