Bei der Verwendung von MySQL sind Sicherheitsprobleme nicht zu vernachlässigen. Im Folgenden werden 23 Hinweise von MySQL angezeigt:
1. Wenn die Verbindung zwischen dem Client und dem Server ein nicht vertrauenswürdiges Netzwerk umfassen und durch dieses hindurchgehen muss, müssen Sie einen SSH-Tunnel verwenden, um die Kommunikation der Verbindung zu verschlüsseln.
2. Verwenden Sie die Anweisung „set password“, um das Passwort des Benutzers in drei Schritten zu ändern. Melden Sie sich zunächst mit „mysql -u root“ beim Datenbanksystem an und verwenden Sie dann „mysql> update mysql.user set password=password(‘newpwd‘)“. , und schließlich „Flush“-Privilegien ausführen“ reicht aus.
3. Zu den Angriffen, vor denen man sich schützen muss, gehören Abhörschutz, Manipulation, Replay, Denial-of-Service usw., bei denen es nicht um Verfügbarkeit und Fehlertoleranz geht. Alle Verbindungen, Abfragen und anderen Vorgänge werden mithilfe von Sicherheitsmaßnahmen basierend auf ACL (Zugriffskontrollliste) durchgeführt. Es gibt auch eine gewisse Unterstützung für SSL-Verbindungen.
4. Jeder andere Benutzer außer dem Root-Benutzer darf nicht auf die Benutzertabelle in der MySQL-Hauptdatenbank zugreifen.
Sobald das in der Benutzertabelle gespeicherte verschlüsselte Benutzerkennwort durchgesickert ist, können andere Benutzer die entsprechende Datenbank nach Belieben verwenden .
5. Verwenden Sie grant- und revoke-Anweisungen, um die Benutzerzugriffskontrolle durchzuführen.
6. Verwenden Sie keine Nur-Text-Passwörter, sondern verwenden Sie Einweg-Hash-Funktionen wie md5() und sha1(), um Passwörter
festzulegen in den Wörterbuchzeichen als Passwort;
8. Verwenden Sie eine Firewall, um 50 % der externen Gefahren zu entfernen, und lassen Sie das Datenbanksystem hinter der Firewall arbeiten, oder platzieren Sie es im DMZ-Bereich.
9. Verwenden Sie nmap, um Port 3306 aus dem Internet zu scannen , oder verwenden Sie telnet server_host Der 3306-Methodentest kann den Zugriff auf den TCP-Port 3306 des Datenbankservers von einem nicht vertrauenswürdigen Netzwerk aus nicht zulassen. Daher müssen Einstellungen an der Firewall oder am Router vorgenommen werden.
10. Um zu verhindern, dass illegale Parameter in böswilliger Absicht weitergegeben werden B. wo ID=234, andere. Aber die Eingabe wo ID=234 ODER 1=1 bewirkt, dass alle angezeigt werden. Verwenden Sie also „“ oder „“, um Zeichenfolgen im Webformular zu verwenden, und fügen Sie %22 zur darzustellenden dynamischen URL hinzu Doppelte Anführungszeichen, %23 stellt das Nummernzeichen dar und %27 stellt ein einfaches Anführungszeichen dar. Es ist sehr gefährlich, ungeprüfte Werte an die MySQL-Datenbank zu übergeben.
12.
Anwendungen, die benötigt werden Um eine Verbindung zur Datenbank herzustellen, sollten allgemeine Benutzerkonten verwendet werden, und dem Benutzer werden nur einige wenige Berechtigungen erteilt.
13. Verwenden Sie bestimmte „Escape-Zeichen“-Funktionen in verschiedenen Programmierschnittstellen (C, C++, PHP, Java, JDBC usw.);
Achten Sie bei der Verwendung der MySQL-Datenbank im Internet darauf, weniger Klartextdaten zu übertragen und SSL und SSH zu verwenden.
14. Lernen Sie, die Sicherheit der übertragenen Daten mit tcpdump und strings zu überprüfen -i eth0 -w -src oder DST-Port 3306 Zeichenfolgen. Starten Sie den MySQL-Datenbankdienst als normaler Benutzer.
15. Verwenden Sie nicht das Linksymbol zur Tabelle, sondern wählen Sie den Parameter --skip-symbolic-links aus.
16. Stellen Sie sicher, dass nur der Benutzer den Datenbankdienst im MySQL-Verzeichnis startet kann Dateien lesen und lesen.
17. Prozess- oder Superberechtigungen dürfen nicht an nicht-administrative Benutzer vergeben werden. Der mysqladmin-Prozessliste kann verwendet werden, um Clientverbindungen zu unterbrechen den Status der Server-Betriebsparameter und die Steuerung von Kopier- und Replikationsdatenbanken
18. Dateiberechtigungen werden anderen Benutzern als Administratoren nicht gewährt, um das Problem des Ladens von Daten „/etc/passwd“ in die Tabelle und der anschließenden Verwendung von „select“ zu verhindern 19.
Wenn Sie den Diensten des DNS-Dienstleisters nicht vertrauen, können Sie in der Namensberechtigungstabelle nur numerische IP-Adressen festlegen.
20. Verwenden Sie die Variable max_user_connections, um den mysqld-Dienstprozess zu aktivieren, um die Anzahl der Verbindungen zu begrenzen ein angegebenes Konto;
21. Die Grant-Anweisung unterstützt auch Ressourcenkontrolloptionen.
22. Starten Sie den Sicherheitsoptionsschalter des mysqld-Dienstprozesses, --local-infile=0 oder 1. Wenn er 0 ist, kann das Client-Programm die lokale Last nicht verwenden data. Ein Beispiel für grant grant insert( user ) auf mysql.user bei Verwendung von -- Das Skip-Grant-Tables-System implementiert keine Zugriffskontrolle für den Zugriff eines Benutzers, Sie können es jedoch verwenden mysqladmin flush-privileges oder mysqladmin reload, um die Zugriffskontrolle zu aktivieren; standardmäßig ist die Anweisung „show Databases“ für alle Benutzer offen, und Sie können sie mit --skip-show-databases deaktivieren.
23. Wenn der Fehler „Fehler 1045 (28000) Zugriff verweigert für Benutzer „root“@„localhost“ (Passwort wird verwendet: NEIN) auftritt, müssen Sie das Passwort zurücksetzen. Die spezifische Methode ist: Beginnen Sie zuerst mit --skip-grant -tables-Parameter mysqld, führen Sie dann mysql -u root mysql,mysql>update user set password=password('newpassword') where user='root';mysql>Flushprivilegien; aus und starten Sie schließlich mysql neu.