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 - Schutz (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 Access Control Lists (ACL) für alle Verbindungen, Abfragen und anderen Operationen , die ein Benutzer ausführen kann versuchen. Es gibt auch eine gewisse Unterstützung für SSL-verschlüsselte 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 zu befolgen:

Niemand wird der Zugriff (außer MySQL Administrator) verweigert der USER - Tabelle in der MySQL - Datenbank. Verschlüsseltes Kennwort - echte Passwort in MySQL. Wenn Sie das Passwort in der Tabelle aufgeführten USER für den Benutzer wissen, können Sie einfach als dieser Benutzer anmelden, wenn Sie Zugang zu Computern für das Konto aufgeführt haben.

Lernen Sie die 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 Berechtigungen für alle Computer im Netzwerk. Kontrollen Teams:

1. Versuchen Sie mysql -u root. Wenn Sie ohne Passwort mit dem Server verbinden können, dann haben Sie Probleme. Jeder kann als MySQL-Benutzer root mit uneingeschränkten Berechtigungen zu Ihrem MySQL - Server verbinden. Lesen Sie sorgfältig die MySQL-Installationsteam, die Aufmerksamkeit auf die Passwort-Option Set bezahlen.

2. Verwenden Sie den Befehl SHOW GRANTS und die Prüfung, um zu sehen , wer Zugang zu dem, was hat. Entfernen Sie die zusätzlichen Privilegien, mit dem Befehl REVOKE.

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

Passwörter und verwenden sie. Verwenden Sie stattdessen den MD5-Algorithmus oder andere basierend auf 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. Er wird dich schützen, zumindest 50% Schwachstellen in jeder Software genutzt werden. MySQL verwendet Port 3306 standardmäßig aktiviert. Dieser Port muss nur auf vertrauenswürdigen Computern zur Verfügung stehen. Der einfachste Weg , um zu überprüfen , ob Ihr MySQL - Port offen ist , den folgenden Befehl von einer entfernten Maschine , um zu versuchen, wo server_host - Hostnamen Ihres MySQL - Server: telnet server_host 3306

Vertrauen Sie nicht alle von den Benutzern 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;. Dieses - Critical Beispiel, aber eine Vielzahl von Leckage-Schutz und den Verlust von Daten auftreten, da Hacker ähnliche Techniken. Denken Sie auch daran numerische Daten zu überprüfen. Ein häufiger Fehler ist nur Zeichenketten zu schützen. Manchmal denken die Leute, 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 solche Datenbanken vorgenommen werden. Der einfachste Weg, um gegen diese Art von Angriffen zu schützen, ist Apostrophe um die numerische Konstanten verwenden:

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

Alle Web-Anwendungen:

1. Versuchen Sie , geben Sie '' '' '' in Ihre Web - Formulare. Wenn Sie jede Art von MySQL-Fehler erhalten, untersuchen das Problem sofort.

2. Versuchen Sie die URL zu verändern, zu ergänzen% 22 ( ' "'), 23% ( '#'), 27% ''.

3. Der Versuch, die Arten von Daten von der dynamischen URL numerischen 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 sie vor der Annahme von MySQL zu entfernen oder Ihre Anwendung sollte einen Fehler.

5. Überprüfen Sie Datengrößen, bevor sie ihre MySQL machen.

6. Die Bewerbung sollte eine Verbindung zur Datenbank mit einem anderen Benutzer als die, die Sie für administrative Zwecke verwenden. 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 mit dem gleichen Namen 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 Abfrage-Streams.

Mitglieder Perl DBI:

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

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-Typ verwenden. MySQL unterstützt die 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 | Streicher


Manchmal brauchen keine Skript-Website zum Schutz vor Hacking auf die spezifische Anfälligkeit zu zahlen (aber natürlich müssen fix) und die Website als Ganzes zu 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 Seite brauchen, um prodelyvat zum Schutz vor zu brechen.

Wenn Sie ein Skript verwenden, zum kostenlosen Download verfügbar, dann folgen bugtracker'om und in regelmäßigen Abständen aktualisiert. Die neuen Versionen beheben häufig schwerwiegende Verwundbarkeiten wurden in früheren Versionen gefunden.

Auch wenn Ihre Website angeben, wie Sie ein Skript verwenden, 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 ist. Aber noch einmal, 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, die Hacker heruntergeladen werden kann

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

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

Korrektur eines früheren Fehler, beheben Sie zugleich und diese - manchmal das Login und Passwort werden in Dateien gespeichert, die Yandex oder Google leicht findet! Sie nicht dieses Problem zu beheben, laufen Sie Gefahr, dass der Hacker nicht einmal Ihre Website speziell zu knacken haben, sondern einfach findet das Opfer über eine Suchmaschine und haknet bekam erste Pech Web-Meister! Sie sich nicht, um sie zu finden!

By the way, können Sie den Zugriff blockieren Motoren durch eine robots.txt zu suchen. Völlig 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 damit die Suchroboter.

3. Das Passwort wird im Klartext gespeichert

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

Für mehr Vertrauen in die Zuverlässigkeit Ihrer Website zu schützen, lesen Sie Artikel auf, dass der freie Zugriff auf veröffentlichte Ressourcen zu brechen hacken, und versuchen, die Methode dort aufgeführten anwenden, wie sie sagen, "auf sich selbst."