Mysql database password e password webform

1

Ho un database Mysql in cui una tabella è pensata per memorizzare reclami / commenti / suggerimenti degli utenti. Sto usando Mysqli per connettermi al database con un

    $con=mysqli_connect("myhost","myuser","mypassword","mydb");

Al momento, "myuser" e "mypassword" sono uguali all'ID e alla password che uso come amministratore per accedere al backend phpmyadmin. È questo il modo corretto per farlo? Questo dà più potere all'utente che voglio? Indica che gli utenti saranno in grado di eseguire istruzioni DELETE e ALTER sulla tabella / database?

La mia preoccupazione è che siccome l'id e la password sono gli admin, gli utenti che in realtà inviano il feedback potrebbero anche usarlo per fare qualcosa che potrebbe danneggiare il database. È necessario utilizzare l'id amministratore e la password in questo codice?

Il mio hosting condiviso non mi consente di creare utenti aggiuntivi - almeno questo è quello che ho capito dalla mia chat con il loro customer care (dicono che devo prendere un piano server dedicato per poter aggiungere altri utenti. non hanno il budget per sostenere il costo aggiuntivo del server virtuale dedicato). Non c'è alcuna tabella Utenti o Privilegi utente nell'installazione. Questo significa che non posso creare le mie tabelle per gestire gli utenti e assegnare i privilegi? Qualcuno di questi tavoli che creo funziona esattamente come quelli che vengono con l'installazione? Esiste una restrizione ai nomi delle tabelle, ad esempio che qualsiasi tabella di questo tipo che mi piacerebbe creare non può avere certi nomi?

    
posta vinaya 13.07.2013 - 09:18
fonte

2 risposte

2

Non è il modo più sicuro per farlo. Un modo più sicuro, come si afferma, sarebbe avere un utente non privilegiato.

È improbabile che tu possa farlo a mano; qualsiasi tabella "Utente" che hai creato sarebbe probabilmente quella, una tabella, senza alcun effetto sugli utenti effettivi del database. Io indovina che il tuo utente "admin" è in realtà un utente normale con privilegi completi su il suo database, che non può, ad esempio, rilasciare GRANT ALL PRIVILEGES ON yourdb.* TO newuser@host IDENTIFIED BY 'password'; senza ottenere ERROR 1044 (42000): Access denied for user... ,

Così com'è, è necessario implementare la sicurezza a livello di applicazione anziché a livello di database. Tuttavia, l'interfaccia MySQLi è abbastanza solida (escludendo le riprese sul piede) e non è troppo difficile prevenire possibili iniezioni SQL.

Salvo che, gli utenti avranno hanno i privilegi di amministratore, ma saranno incapaci di usarli.

    
risposta data 13.07.2013 - 10:01
fonte
1

se tu (o il tuo hoster) non puoi creare un utente adizionale che ha select-right solo per l'intero db e write-right solo alle tabelle date, quindi

Is this the correct way to do this?

questo è l'unico modo per te.

il modo corretto sarebbe:

GRANT ALL  ON yourdb.* TO adminuser@host IDENTIFIED BY 'password';
GRANT SELECT  ON yourdb.* TO webuser@host IDENTIFIED BY 'password2';
GRANT INSERT  ON yourdb.complaints TO webuser@host IDENTIFIED BY 'password2';
...

vedi: Sintassi GRANT

    
risposta data 13.07.2013 - 10:20
fonte

Leggi altre domande sui tag