Controllo degli accessi MySQL?

2

Ho letto da qualche parte che è meglio avere due diversi accessi MySQL per impedire l'hacking. Ciò che intendo è avere un accesso MySQL per l'accesso in lettura (autorizzazione SELECT) e un altro accesso per l'accesso in scrittura (autorizzazione INSERT, UPDATE, CREATE e DELETE). È utile averlo configurato in questo modo e funzionerebbe con qualcosa come uno script PHP?

    
posta ub3rst4r 09.03.2013 - 19:51
fonte

2 risposte

4

Gli sviluppatori creano bug. Un tipo di errore (purtroppo) piuttosto comune nelle applicazioni Web con PHP e SQL sono le iniezioni SQL. Una conseguenza di tale bug è che gli estranei ostili possono iniettare del codice SQL arbitrario per essere valutato dal database.

Se hai due account per accedere al database e uno di questi ha solo le autorizzazioni di lettura, allora qualsiasi errore di SQL injection nelle richieste fatte da quel specifico account di sola lettura garantirà solo l'accesso in sola lettura all'attaccante.

È come le porte interne di un sottomarino. Queste porte sono progettate per resistere alla pressione e saranno chiuse in caso di emergenza. In questo modo, se lo scafo viene forato, l'acqua invaderà solo parte del sottomarino, che quindi affonderà più lentamente, e le possibilità di sopravvivenza per l'equipaggio saranno notevolmente migliorate. Usare account separati di lettura e scrittura per MySQL è lo stesso tipo di protezione. Preferiresti comunque non essere colpito da un siluro, comunque; vale a dire che è meglio se non permetti l'esecuzione di iniezioni SQL, usando SQL correttamente (con istruzioni preparate ).

    
risposta data 09.03.2013 - 20:03
fonte
0

Difficile da seguire, ma hai considerato qualcosa di simile al modello MAC

Il modello è basato su, i permessi utente o gruppi sono decisi su livello di autorizzazione e livelli di classificazione dei dati .

Ad esempio, se il livello di autorizzazione del soggetto domina il livello di classificazione dei dati (a una determinata tupla in db) gli verrebbe negato l'accesso. Le righe vengono restituite ESCLUSIVAMENTE se vi è una corrispondenza corretta tra livello di classificazione e livello di chiarezza corrispondente.

Cosa significa che un'iniezione riuscita di sql darebbe a un utente malintenzionato l'accesso solo a un sottoinsieme di dati oa seconda di come l'attacco viene eseguito nei casi gli restituirebbe assoluto nessun risultato (errore di privilegio) . Annulla efficacemente la superficie di attacco con questa tecnica.

    
risposta data 09.03.2013 - 20:23
fonte

Leggi altre domande sui tag