This page has been robot translated, sorry for typos if any. Original content here.

Allgemeine Schutzrichtlinien

Jeder Einsatz von MySQL (oder einem anderen SQL-Server) auf dem Computer mit dem Internet verbunden ist, diesen Rat lesen Sie die häufigsten Sicherheitsprobleme zu vermeiden.

Allerdings müssen wir die Bedeutung des vollständigen Server - Schutzes (nicht nur der MySQL - Server) gegen alle Arten von Angriffen anwendbar betonen. In diesem Artikel ist es leider nicht möglich, alle Aspekte der Sicherheitsprobleme zu decken, aber die wichtigsten Themen angemessen berücksichtigt.

MySQL verwendet Schutz auf Basis von Zugriffssteuerungslisten (ACL) für alle Verbindungen, Abfragen und andere Operationen , die ein Benutzer ausführen kann versuchen. Es gibt auch eine gewisse Unterstützung für SSL-verschlüsselten Verbindungen zwischen MySQL - Clients und Servern. Viele der Konzepte in diesem Artikel beschrieben sind nicht spezifisch für MySQL und kann auf alle Anwendungen angewendet werden.

Wenn MySQL ausgeführt wird , versuchen Sie diese Richtlinien befolgen:

Sie niemanden Zugang geben (außer MySQL Administrator) auf die USER - Tabelle in der MySQL - Datenbank. Verschlüsseltes Kennwort - echtes Passwort in MySQL. Wenn Sie das Passwort in der Tabelle aufgeführten USER für diesen Benutzer kennen, können Sie einfach als dieser Benutzer anmelden, wenn Sie den Zugriff auf Computer für das Konto aufgeführt haben.

Lernen Sie das MySQL - Zugriffsberechtigungssystem. Erteilen und Entziehen Befehle zur Steuerung des Zugriffs auf MySQL verwendet. Nehmen Sie nicht mehr Privilegien als nötig gewähren. Nie gewähren Privilegien für alle Computer im Netzwerk. Kontrolle überprüft Teams:

1. Versuchen Sie mysql -u root. Wenn Sie ohne Passwort an den Server eine Verbindung herstellen können, dann haben Sie Probleme. Wer wird in der Lage sein, Ihren MySQL - Server als MySQL - root - Benutzer mit voll Rechten zu verbinden. Lesen Sie sorgfältig die MySQL-Installationsteam, die Aufmerksamkeit auf die Passwort-Option Set bezahlen.

2. Verwenden Sie den Befehl SHOW GRANTS und überprüfen, um zu sehen , wer Zugriff auf was hat. Entfernen Sie unnötigen Privilegien mit dem REVOKE-Befehl.

Speichern Sie keine Passwörter im Klartext in der Datenbank. Wenn Ihr Computer gefährdet ist, kann der Eindringling eine vollständige Liste erhalten

Passwörter und verwenden sie. Stattdessen verwendet den MD5-Algorithmus oder ein anderes auf der Grundlage der Einweg-Hash-Funktion.

Wählen Sie keine Passwörter aus Wörterbüchern. Es gibt spezielle Programme, um sie abzuholen. Auch Passwörter wie „xfish98“ sind sehr schlecht. Viel besser - „“ duag98 „die das gleiche Wort“ Fisch ‚enthält aber getippt eine Taste links auf der Tastatur Eine andere Methode ein Passwort wie‘ UMBBR ‚zu verwenden ist, die in dem Satz‘ Maria des ersten Wortes besteht. es war ein großes Kind. „Solche Passwörter sind leicht zu merken und die Art, aber schwierig, den Angreifer zu finden.

Verwenden Sie eine Firewall. Es wird Sie schützen, zumindest 50% Schwachstellen in jeder Software genutzt werden. MySQL verwendet Port 3306 standardmäßig aktiviert. Dieser Port darf nur von vertrauenswürdigen Hosts zugänglich sein. Der einfachste Weg , um zu überprüfen , ob Ihr MySQL - Port offen ist , ist der folgende Befehl von einem Remote - Computer , um zu versuchen, wo server_host - Hostnamen Ihres MySQL - Server: telnet server_host 3306

Vertrauen Sie nicht alle vom Benutzer eingegebenen Daten. Sie können Ihren Code durch Eingabe von Sonderzeichen in einem Web-Formular oder eine URL Trick. Stellen Sie sicher, dass Ihre Anwendung sicher bleibt, wenn ein Benutzer gibt so etwas wie: DROP DATABASE mysql;. Dies ist - ein Beispiel für einen kritischen, aber eine Menge von Leckageschutz und Datenverlust kann wegen Hacker mit ähnlichen Techniken auftreten. Denken Sie auch daran numerische Daten zu überprüfen. Ein häufiger Fehler ist nur Zeichenketten zu schützen. Manchmal Leute denken, dass, wenn eine Datenbank nur öffentlich verfügbare Daten enthält, sollte es nicht geschützt werden. Das ist nicht richtig. Zumindest kann DoS-Angriff gegen diese Datenbanken vorgenommen werden. Der einfachste Weg, um gegen diese Art von Angriffen zu schützen, ist Apostrophe um die numerischen Konstanten zu verwenden:

SELECT * FROM Tabelle WHERE ID = '234'. MySQL konvertiert automatisch diese Zeichenfolge in eine Zahl und entfernt alle nicht-numerische Zeichen in einer Abfrage. überprüfen:

Alle Web-Anwendungen:

1. Versuchen Sie , geben Sie ‚‘ ‚‘ ‚‘ in Ihren Web - Formularen. Wenn Sie jede Art von MySQL Fehlermeldung erhalten, untersucht das Problem sofort.

2. Versuch , die URL zu ändern, das Hinzufügen 22% ( '' '), 23% (' # '), 27%'‘.

3. Den Versuch, die Arten von Daten aus der dynamischen URL numerische Zeichen, um die Zeichen in den vorherigen Beispielen gezeigt zu ändern. Ihre Bewerbung sollte gegen diese und ähnliche Angriffe sicher sein.

4. Versuchen Sie Zeichen, Leerzeichen und Sonderzeichen anstelle von Zahlen in numerischen Feldern einzugeben. Ihre Bewerbung sollte sich vor der Annahme von MySQL entfernen oder Ihre Anwendung sollte einen Fehler.

5. Überprüfen Sie die Größe der Daten vor ihrer MySQL zu machen.

6. Die Bewerbung sollte eine Verbindung zur Datenbank mit einem anderen Benutzer als die, die Sie für administrative Zwecke nutzen. Ihre Anwendung nicht mehr Rechte als diejenigen lassen, die sie wirklich brauchen.

PHP - Benutzer:

Überprüfen Sie die Funktion addslashes (). Nach PHP 4.0.3 ist mysql_escape_string () Funktion zur Verfügung, die auf die Funktion des gleichen Namens in der MySQL C API basiert.

Mitglieder MySQL - C - API:

Überprüfen Sie die API-Anfrage mysql_escape_string ().

Mitglieder MySQL ++:

Prüfen Sie Übergänge und Zitate Modifikatoren in den Fluss von Anfragen.

Mitglieder Perl DBI:

Überprüfen Sie die quote () Methode oder eine strukturelle Null (Platzhalter) verwenden.

Registrierte Benutzer Java - JDBC:

Verwenden Sie ein PreparedStatement-Objekt und Platzhalter.

Senden Sie nicht unverschlüsselt über das Internet. Diese Daten sind für jeden zugänglich, die Zeit und die Fähigkeit hat, sie abzufangen und sie für ihre eigenen Zwecke zu nutzen. Stattdessen ein verschlüsseltes Protokoll SSL oder SSH-Typen verwenden. MySQL unterstützt interne SSL-Version 3.23.9. SSH kann verwendet werden, verschlüsselte Tunnel zu erstellen.

Erfahren Sie, wie tcpdump zu verwenden. In den meisten Fällen können Sie überprüfen, ob Ströme MySQL Daten unverschlüsselt sind wirklich mit dem folgenden Befehl:

shell> tcpdump -l -i eth0 -w - src oder dst Port 3306 | Strings


Manchmal ist das Skript gegen Hacking-Website zu schützen notwendig ist, darauf zu achten, nicht auf die spezifischen Schwachstellen (aber natürlich müssen fix) und die Website als Ganze schützen (in der Tat verhindern Anfälligkeit für ihre Anwesenheit). In diesem Artikel werde ich Ihnen sagen, dass Sie in regelmäßigen Abständen auf seiner Website prodelyvat sollte zum Schutz vor zu brechen.

Wenn Sie Skripte zum kostenlosen Download zur Verfügung verwenden, dann folgen bugtracker'om und in regelmäßigen Abständen aktualisiert. In neuen Versionen beheben häufig schwerwiegende Verwundbarkeiten in früheren Versionen gefunden.

Auch wenn Ihre Website angeben, wie Sie das Skript verwenden, dann entfernen Sie diese Informationen aus der Versionsnummer. Wenn der Angreifer nicht weiß, welche Version Sie haben, kann es nicht eine Schwachstelle in der Version des Skripts verwenden, die Sie kostet. Aber auch hier nur „kann“, so dass alle das Update trotzdem.

Nun gehen Sie durch die Fehler, die in Ihrem selbstgemachten Skript sein kann.

1. Das Passwort wird in einer Datei gespeichert, der Hacker heruntergeladen werden kann

Wenn die Zugangsdaten in der Datei enthalten ist, ist es notwendig, sie aus dem Download zu schützen. Überprüfen Sie, ob Sie die Datei öffnen können, die das Login und Passwort über Ihren Browser enthält!

2. Das Passwort wird in einer Datei gespeichert, die von Suchmaschinen indiziert wird

Korrektur der vorherigen Fehler, beheben Sie zugleich und diese - manchmal das Login und Passwort werden in Dateien gespeichert, die Yandex oder Google leicht finden! Verpassen Sie nicht diese Fehler beheben, führen Sie das Risiko, dass ein Hacker speziell Hack nicht einmal Ihre Website, und einfach das Opfer über eine Suchmaschine und haknet findet erstes Pech Web-Master bekam! Sie nicht beweisen!

By the way, können Sie den Zugriff blockieren Motoren über robots.txt zu suchen. Vollständig leugnen keinen Zugriff auf die Website (und von da Besucher nehmen?), Und nur für diese Verzeichnisse sein sollte, die den Besucher nicht sehen sollte, und somit die Suchroboter.

3. Das Passwort wird im Klartext gespeichert

Das Passwort muss in verschlüsselter Form gespeichert werden. Der am meisten bevorzugte Modus ist ein Hash, wie der direkte Weg (Sie MD5 oder SHA1 verwenden können), um das Passwort aus dem Hash unmöglich zu bekommen. Aber es gibt Online-Datenbank von Hashes, die Ihr Passwort und Ihre Hash speichern können, so verwenden ungewöhnliche Passwörter und Passwörter aus einem zufälligen Satz von Zeichen.

Für mehr Vertrauen in der Zuverlässigkeit des Schutzes Ihrer Website, lesen Sie Artikel zu brechen, dass frei auf dem Hack zur Verfügung stehenden Ressourcen veröffentlicht, und versucht, die Methode dort festgelegten anzuwenden, wie sie sagen, „auf mich selbst.“