È sicuro eseguire query MySQL su un dispositivo client?

1

Sto costruendo un progetto che richiede agli utenti di essere autenticati per accedervi. Stavo pensando di usare MySQL come database e di eseguire script PHP sul client per recuperare i dati degli utenti. Per esempio. SELEZIONA * da uaccounts WHERE username = 'bob'. E quindi memorizzare il resto delle informazioni se l'utente si autentica in una sessione. È sicuro eseguire query SQL su un client o dovrei esaminare qualcosa come Firebase o creare un'API o guardare un'altra API esterna per archiviare e interrogare i dati dell'utente (e altre query SQL). L'esecuzione di SQL sul client è aperta all'intercettazione da parte di utenti malintenzionati o è sicura finché viene eseguita correttamente?

    
posta Oliver Leach 17.11.2017 - 21:02
fonte

2 risposte

1

SELECT * from uaccounts WHERE username = 'bob

Supponendo che Bob debba solo vedere il record per Bob, allora non è sicuro. Bob può estrarre i parametri di connessione dall'applicazione ed eseguire qualsiasi query voglia.

La sicurezza del database è in ogni implementazione che ho visto eseguita a livello di tabella. Anche se si consegna a Bob il proprio account utente per il database, sarà comunque necessario selezionare il permesso sulla tabella uaccounts, il che significa che può eseguire "SELECT * FROM uaccounts".

L'unico modo per renderlo sicuro consiste invece nel dare a Bob select permission sulla tabella la creazione di stored procedure senza parametri (su cui Bob avrebbe bisogno di autorizzazioni di esecuzione) che utilizzano il nome utente registrato. E questo è di solito molto più difficile del suo valore e troppo facile da rovinare. Per non parlare che non è in scala reale. Facebook non vorrebbe un nome utente di database separato per ogni utente del sito ...

    
risposta data 18.11.2017 - 01:31
fonte
0

Senza entrare in una discussione esaustiva su come funziona l'autenticazione e lo scambio di dati di mysql, è sicuro finchè è fatto correttamente. E farlo correttamente significa usare una connessione SSL. MySql supporta questo fuori dalla scatola

Tuttavia, la sicurezza può anche significare limitare la quantità di danni che i client possono fare al server. È possibile farlo su una connessione mysql non autorizzata negando l'accesso alle tabelle per l'account utente e consentendo le operazioni mediante stored procedure con separazione dei privilegi. In alternativa, usa https come trasporto con un semplice server di riposo di fronte al dbms.

    
risposta data 17.11.2017 - 22:51
fonte

Leggi altre domande sui tag