  | 
                  | 
          
                       		 
             
                            
 
Sicherheitsrichtlinien zum Betrieb von Mysql 
Modifizierter 
  Auszug aus den MySQl Handbuch 
Wenn Sie MySQL laufen lassen, sollten Sie möglichst immer folgende
Richtlinien beachten:
 
  -  GEBEN SIE NIEMALS JEMANDEM AUSSER DEM MySQL-ROOT-BENUTZER ZUGRIFF AUF DIE 
    
user-TABELLE IN DER mysql-DATENBANK! Das verschlüsselte 
    Passwort ist das echte Passwort in MySQL.  
  - Checkliste: 
    
      -  Probieren Sie 
mysql -u root. Wenn es Ihnen gelingt, sich 
        erfolgreich mit dem Server zu verbinden, ohne nach einem Passwort gefragt 
        zu werden, haben Sie ein Problem! 
      -  Benutzen Sie den Befehl 
SHOW GRANTS und prüfen Sie nach, 
        wer Zugriff auf was hat.  
     
   
  -  Keine Klartext-Passwörter in Ihrer Datenbank.
 
    Benutzen Sie statt dessen MD5() oder eine andere Einweg-Hash-Funktion. 
   
  -  Benutzen Sie keine Passwörter aus Lexika
 
  -  Investieren Sie in eine Firewall. 
 
  -  Trauen Sie keinen Daten, die von Benutzern eingegeben werden. Sie können 
    versuchen, Ihren Code auszutricksen, indem Sie spezielle oder escapete Zeichenfolgen 
    in Web-Formulare, URLs oder sonstige Applikationen, die Sie hergestellt haben, 
    eingeben. 
 
    Stellen Sie sicher, dass Ihre Applikation sicher bleibt, wenn ein Benutzer 
    etwas wie ``; DROP DATABASE mysql;'' eingibt. Das ist ein extremes 
    Beispiel, aber große Sicherheitslücken und Datenverlust können eintreten, 
    wenn ein Hacker ähnliche Techniken benutzt und Sie nicht darauf vorbereitet 
    sind.  
    Denken Sie auch daran, numerische Daten zu überprüfen.  
    Die einfachste Art, sich vor dieser Art von Angriffen zu schützen, ist, Apostrophe 
    um numerische Konstanten herum zu benutzen: SELECT * FROM tabelle WHERE 
    ID='234' statt SELECT * FROM tabelle WHERE ID=234. 
  - Checkliste: 
    
      -  Alle Web-Applikationen: 
        
          -  Versuchen Sie, `'' und `"' in alle Ihr 
            Web-Formulare einzugeben. Wenn Sie irgend welche MySQL-Fehler erhalten, 
            untersuchen Sie das Problem unverzüglich! 
 
          -  Versuchen Sie, jedwede dynamischen URLs zu ändern, indem Sie 
%22 
            (`"'), %23 (`#') und %27 
            (`'') zu den URLs hinzufügen.  
          -  Versuchen Sie, Datentypen in dynamischen URLs von numerischen zu 
            Zeichentypen zu ändern, die Zeichen aus den vorherigen Beispielen 
            enthalten. 
 
          -  Versuchen Sie Buchstaben, Leerzeichen und Sonderzeichen anstelle 
            von Zahlen in numerische Felder einzugeben. 
 
          -  Überprüfen Sie Datengrößen, bevor Sie sie an MySQL übergeben. 
 
          -  Überlegen Sie, ob es sinnvoll ist, dass sich Ihre Applikation mit 
            einem anderen Benutzernamen mit der Datenbank verbindet als mit dem, 
            den Sie für Verwaltungszwecke benutzen. Geben Sie Applikationen nicht 
            mehr Zugriffsberechtigungen als sie brauchen. 
 
         
       
      -  Benutzer von PHP: 
        
          - Sehen Sie sich die 
addslashes()-Funktion an. Ab PHP 
            4.0.3 ist eine mysql_escape_string()-Funktion verfügbar, 
            die auf der Funktion mit demselben Namen in der MySQL-C-API basiert. 
           
         
       
     
   
  -  Übermitteln Sie keine Klartextdaten (unverschlüsselte Daten) über das Internet. 
    Diese Daten sind für jeden zugänglich, der Zeit und Möglichkeit hat, sie abzuhören 
    und sie für die eigenen Zwecke zu benutzen. Benutzen Sie statt dessen ein 
    verschlüsseltes Protokoll wie SSL oder SSH. 
 
 
Wie Sie MySQL gegen Cracker sicher machen
Um ein MySQL-System sicher zu machen, sollten Sie auf jeden Fall folgende Vorschläge 
  in Betracht ziehen:  
  -  Benutzen Sie Passwörter für alle MySQL-Benutzer. 
 
  -  Lassen Sie den MySQL-Daemon nicht als Unix-
root-Benutzer laufen. 
   
  -  Unterstützen Sie keine Symlinks auf Tabellen 
 
  - 
Überprüfen Sie, dass der Unix-Benutzer, der 
mysqld laufen läßt, der
einzige Benutzer mit Lese-/Schreibzugriffen auf die Datenbankverzeichnisse
ist.
 
  -  Geben Sie nicht allen Benutzern das process-Zugriffsrecht
 
  -  Geben Sie nicht allen Benutzern das file-Zugriffsrecht
 
  - 
Wenn Sie Ihrem DNS nicht trauen, sollten Sie IP-Nummern anstelle von
Hostnamen in den Berechtigungstabellen verwenden. In jedem Fall sollten Sie
sehr vorsichtig damit sein, Einträge in Berechtigungstabellen vorzunehmen,
die Hostnamen mit Platzhaltern (Wildcards) verwenden!
 - 
Wenn Sie die Anzahl der Verbindungen für einen einzelnen Benutzer
beschränken wollen, können Sie das tun, indem Sie die
max_user_Verbindungen-Variable in mysqld setzen.
  
  
      | 
       |