Informazioni sulla gestione di MySql

Stò creando con un mio amico un piccolo sito, con database mysql e il resto in php a scopo di “test”: per vedere un po’ come funziona un server e la sua gestione.
Quindi innanzitutto volevo chiedervi se avete dei consigli generali che è meglio seguire per qualunque server, e poi volevo sapere se il Database mysql che contiene i dati di accesso (login, passwd, nome, cognome etc) deve essere in qualche modo crittografato.
Questo perché non mi è ben chiaro se serva la crittografia del DB per sicurezza, oppure basti l’HTTPS al login ed eventualmente durante la sessione.
Il mio amico crede che serve crittografare l’intero database, secondo me invece no, perché in teoria al DB non può accedere nessuno, dovrebbe essere in pratica “Off Limits” per gli utenti, no? Quindi la crittografia sarebbe solo uno spreco di spazio (sempre che si possa fare…).

Rimanendo in argomento sicurezza, per le password memorizzate nel database, c’è un tipo particolare o mi basta un VARCHAR? (vorrei fare la scelta della password libera, quindi un CHAR non andrebbe bene, sbaglio?) Ho letto 2 guide, ma non c’era niente riguardo alle password

Spero di essere stato sufficientemente chiaro, se volete ulteriori spiegazioni chiedete pure. Grazie a tutti!

Non serve crittografare l’intero database. Crea un campo password nel db (varchar di almeno 40 caratteri) poi è da script php che crittografi la password di solito md5() è più che sufficente (md5() è una funzione php), questo quando dal tuo script per esempio inserisci un nuovo utente, poi per l’identificazione, richiami la password criptata dal db e la confronti con quella immessa, naturalmente dopo che hai convertito di nuovo con la funzione md5() la password immessa. Per effettuare dei test direttamente dal db, puoi inserire una password in chiaro, e selezionare l’opzione md5() che trovi in phpmyadmin (penso che userai questo per gestire il database) cosi per il momento ti eviti lo script di inserimento. In questo modo la password in chiaro non esisterà più tranne nell’attimo in cui verrà digitata nel form, ma se usi e https, la digitazione e l’invio dei dati saranno del tutto invisibili.

Spero sia chiaro!!

Per la crittografia delle password molti cms usano questo framework: http://www.openwall.com/phpass/

Grazie m4x1m, pensa che proprio mentre scrivevi il mio amico aveva trovato questo metodo dell’ md5. Mi sembra anche abbastanza facile da fare, quindi credo sia la soluzione ideale per il momento.

@MarioS
Grazie anche a te della segnalazione, adesso proviamo a fare con l’md5 e vediamo. Poi magari proviamo anche con PHPASS e visto che non si smette mai di imparare, sarà sicuramente una conoscenza importante in più :slight_smile:

Procedete comunque per gradi nei vari test, prima provate l’autenticazione e il salvataggio dei dati nel DB.
Poi passate anche alla crittografia dei dati, eventualmente passate a sistemi di crittografia più “potenti” dell’algoritmo md5.

Ciao

Riprendo il post per porre una nuova domanda sempre attinente a Mysql.
Se credo un database in locale, con i pacchetti inclusi in fedora, dopo posso spostarlo sullo spazio hosting che ho? Io uso Netsons. Dove li trovo i file da copiare?

Oppure è meglio che lo faccio da zero direttamente sul server?

Se credi? Non pensavo che mysql potesse diventare pure un movimento religioso :wink:

Comunque i database in genere non si “esportano” (è il termine corretto) con lo spostamento di file.
Con il client che usi per gestire il tuo database esporti il database che ti interessa in formato sql, per esempio (bisogna portare la dovuta attenzione alla codifica del database in locale con la codifica del DBMS e che i beckend dei due database siano compatibili, mysql ne ha vari, per cui se ne usi uno particolare in locale devi assicurarti che il tuo servizio di hosting fornisca quel beckend che ha delle determinate caratteristiche).
Una volta salvato il file sql di esportazione dal client che fornisce il tuo servizio di hosting lo importi, se hai esportato in sql (ed è tutto compatibile) il codice sql si arrangerà a creare il database con le tabelle i campi e gli eventuali valori da inserire.

[quote]
Oppure è meglio che lo faccio da zero direttamente sul server?[/quote]
Se vuoi puoi anche fare da zero, nessuno te lo vieta :slight_smile:
Se hai problemi di importazione e il database non è troppo complesso potresti crearti la struttura del tuo database e poi importare solamente i valori dei vari campi che potresti aver esportato precedentemente (o in formato sql o altro a seconda di ciò che hai scelto).

P.S. con phpMyAdmin riesci a fare tutto questo con semplicità.

Ciao

Grazie, ho trovato per esportare il DB questo metodo

mysqldump -u root -p nome_db >C:\nome_file.txt

Mentre per importarlo

mysql -u root -p <C:\nome_db.txt

farò una prova, pensi che possano funzionare? Sono perplesso perché mi dicevi “formato sql” mentre questi sono semplici txt…

Per esportazione in formato sql intendo un file di testo con dentro il codice sql.

L’operazione che hai scelto dovrebbe andare più che bene :wink:

Buon lavoro

Ah :smiley: Perfetto! GRAZIE!
Se avrò qualche altro problema riprenderò il post dato che mi sembri molto preparato in argomento :slight_smile: Grazie ancora della disponibilità!