di: Claudio Garau 22 Maggio 2007
Come noto l'accesso al DBMS MySQL necessita di autenticazione. I dati archiviati possono essere anche importanti quindi non è il renderli manipolarli da chiunque. Questo vuol dire che ad ogni utente autorizzato alla gestione dei database potranno essere associate una "username" e una "password" indispensabili per poter passare alla fase successiva al login, quella in cui il server MySQL rimane in attesa delle interrogazioni.
L'identità dell'utilizzatore si basa su due parametri: il nome utente (username) e l'host, nome della macchina su cui è in esecuzione il DBMS. La procedura di login è fondata invece sul database denominato "mysql" che contiene la tabella "user" con il compito di archiviare in tre colonne: host, user e password, cioè i dati di accesso dei diversi utilizzatori. L'accesso al DBMS sarà quindi consentito solo nel caso in cui vi sia una corrispondenza tra le informazioni contenute in uno dei records presenti in tabella e i dati immessi per l'autenticazione.
I valori consentiti per il campo host della tabella "user" sono in genere un comune hostname, un numero IP o semplicemente localhost se lavoriamo in locale. Nella definizione di un host vengono comunque accettati alcuni caratteri speciali come il simbolo percentuale ("%") e l'underscore ("_"); questi ultimi vengono utilizzati per facilitare operazioni di ricerca all'interno delle stringhe con un procedura omologa a quella dell'operatore SQL LIKE, per cui "%" indicherà qualsiasi gruppo di caratteri, mentre "_" indicherà la corrispondenza ad un solo carattere.
Nel caso in cui l'host sia definito tramite l'indicazione di un numero IP è possibile stabilire anche una netmask corrispondente al range di indirizzi da cui potrà essere effettuato l'accesso. Consideriamo un'autorizzazione formulata nel modo seguente:
GRANT ALL PRIVILEGES ON db.* TO claudio@'192.xx.xxx.0/255.255.255.0';
L'utente definito nell'istruzione avrà la possibilità di accedere a MySQL da qualsiasi terminale dotato di numero IP in grado di soddisfare la seguente condizione:
client_ip & netmask = host_ip
Che nel caso specifico sarà espressa in questo modo:
client_ip & 255.255.255.0 = 192.xx.xxx.0
Ciò significa avranno accesso al DBMS tutti i client il cui IP sarà ricompreso all'interno di un range che va dal "192.xx.xxx.0" al "192.xx.xxx.255."
L'utilizzo della netmask nella definizione degli host è previsto soltanto per indirizzi a 8, 16, 24 e 32 bit, quindi a partire dal numero minimo di bit potranno essere presi in considerazione solo gli indirizzi ottenuti sommando la cifra 8 al valore minimo precedente (8+8=16, 16+8=24..).
Ad esempio:
Valori superiori, inferiori o intermedi di bit non saranno accettati.
L' host può anche non essere specificato, in questo caso verrà considerato dal DBMS come omologo al carattere "%". L'utilizzo del simbolo percentuale nella definizione degli host pone alcuni problemi inerenti al tema della sicurezza. Un host specificato in questo modo:
192.xxx.xxx.%
potrebbe essere sfruttato per far sì che un utente malintenzionato riesca ad infiltrarsi nell'accesso al server MySQL digitando un host simile al seguente:
192.xxx.xxx.nome.it
Prevedendo un'evenienza del genere, MySQL è in grado di non consentire ricerche tramite wildcards sulla base di host contenenti caratteri alfabetici o punteggiatura, sarà quindi possibile effettuare operazioni di corrispondenza tramite "%" soltanto su IP di tipo numerico.
|
SQL Maintenance Solution: soluzione free per la manutenzione di SQL Server |
Guida AccessIniziare a sviluppare database grazie alla potenza visuale offerta... |
Guida SQL Server 2005L'RDBMS di Microsoft è uno dei più utilizzati, soprattutto in ambito... |
Guida OracleScoprire ed approfondire un dei più importanti RDBMS sulla scena... |
Ogni settimana, in due distinte newsletter: notizie a approfondimenti su MySQL, SQLserver e Oracle.
Iscriviti alla newsletter