182 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
shell> telnet server_host 3306
Wenn Sie eine Verbindung und einige sinnlose Zeichen erhalten, ist der Port offen
und sollte auf Ihrer Firewall oder Ihrem Router geschlossen werden, sofern Sie nicht
einen wirklich guten Grund haben, ihn offen zu halten. Wenn telnet einfach h¨angt
oder die Verbindung a/jointfilesconvert/293675/bgelehnt wird, ist alles in Ordnung, der Port ist blockiert.
• Trauen Sie keinen Daten, die von Benutzern eingegeben werden. Sie k¨onnen 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 Sicher-
heitsl¨ucken und Datenverlust k¨onnen eintreten, wenn ein Hacker ¨ahnliche Techniken
benutzt und Sie nicht darauf vorbereitet sind.
Denken Sie auch daran, numerische Daten zu ¨uberpr¨ufen. Ein h¨aufiger Fehler besteht
darin, nur Zeichenketten zu sch¨utzen. Manchmal denken Leute, dass eine Datenbank,
die nur ¨offentlich zug¨angliche Daten enth¨alt, nicht gesch¨utzt werden muss. Das stimmt
nicht. Auf solche Datenbanken k¨onnen zumindest Dienstverweigerungsangriffe (Denial-
of-Service-Attacken) durchgef¨uhrt werden. Die einfachste Art, sich vor dieser Art von
Angriffen zu sch¨utzen, ist, Apostrophe um numerische Konstanten herum zu benutzen:
SELECT * FROM tabelle WHERE ID=’234’ statt SELECT * FROM tabelle WHERE ID=234.
MySQL wandelt diese Zeichenkette automatisch in eine Zahl um und entfernt alle nicht-
numerischen Zeichen aus ihr.
Checkliste:
− Alle Web-Applikationen:
• Versuchen Sie, ‘’’ und ‘"’ in alle Ihr Web-Formulare einzugeben. Wenn
Sie irgend welche MySQL-Fehler erhalten, untersuchen Sie das Problem un-
verz¨uglich!
• Versuchen Sie, jedwede dynamischen URLs zu ¨andern, indem Sie %22 (‘"’),
%23 (‘#’) und %27 (‘’’) zu den URLs hinzuf¨ugen.
• Versuchen Sie, Datentyp en in dynamischen URLs von numerischen zu Ze-
ichentypen zu ¨andern, die Zeichen aus den vorherigen Beispielen enthalten.
Ihre Applikation sollte gegen solche und ¨ahnliche Angriffe sicher sein.
• Versuchen Sie Buchstaben, Leerzeichen und Sonderzeichen anstelle von Zahlen
in numerische Felder einzugeben. Ihre Applikation sollte diese entfernen,
bevor sie sie MySQL ¨ubergibt, und Ihre Applikation sollte einen Fehler erzeu-
gen. Es ist sehr gef¨ahrlich, nicht gepr¨ufte Werte an MySQL zu ¨ubergeben!
•
¨
Uberpr¨ufen Sie Datengr¨oßen, bevor Sie sie an MySQL ¨ubergeben.
•
¨
Uberlegen Sie, ob es sinnvoll ist, dass sich Ihre Applikation mit einem an-
deren Benutzernamen mit der Datenbank verbindet als mit dem, den Sie f¨ur
Verwaltungszwecke benutzen. Geben Sie Applikationen nicht mehr Zugriffs-
berechtigungen 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¨ugbar, die auf der Funktion mit demselben
Namen in der MySQL-C-API basiert.
Comentarios a estos manuales