09 08 2007 Nils Hitze
Dieser Artikel zeigt ein paar einfache Funktionen mit denen man die eigene Webanwendung etwas sicherer machen kann. Usereingaben Alle Formularfelder die von Benutzern ausgefüllt und übertragen werden sollten mit addslashes, htmlentities oder urlencode entschärft werden. Will man zudem noch verhindern das HTML eingefügt wird kann man mit strip_tags alle HTML-Tags entfernen oder nur bestimmte zulassen. Numerische Werte Wenn man weiß das die übertragenen Werte nur numerisch sein dürfen kann man vorher mit is_numeric abfragen ob sie es auch wirklich sind. Datenbanken Wer mit Datenbanken arbeitet sollte die Escape funktion für die jeweilige Datenbank verwenden. Für MySQL gibt es die Funktion mysql_real_escape_string. Werte die an die Datenbank übergeben werden sollten vorher mit dieser Funktion escaped werden um SQL Injection Angriffe zu verhindern. Hier ein kleines Beispiel: So sollte man es nicht machen
$user = $_GET['user'];
mysql_query("SELECT FROM tabelle WHERE user=\"$user\"");
denn ein Angreifer könnte die URL manipullieren und versuchen eine weitere SQL Anweisung ausführen zu lassen. Beispiel:   http://www.domain.de/?user=1;UPDATE... Richtig wäre so
$user = mysql_real_escape_string($_GET['user']);
mysql_query("SELECT FROM tabelle WHERE user=\"$user\"");
Es ist auch immer ratsam für jede Anwendung einen neuen Datenbank Benutzer einzurichten und diesem nur die Rechte zu geben die die Anwendung braucht. Cookie's Auch Cookies sollten wie Usereingaben behandelt werden da man auch diese manipulieren kann.

Bookmark   at del.icio.us Digg  Technorati

Kommentare

Ansicht der Kommentare: (Linear | Verschachtelt)
09 08 2007
#1 Nils (Antwort)

Klingt gut. Hat mir schon oft den Tag versaut diese mistige Funktion und ich hab leider keine gleichbleibenden Serverkonfigurationen. Lass mich noch einen Satz hinterherwerfen der da heisst: TRAUE KEINEM NUTZER
Kommentar (1)
09 08 2007
#2 jcortina (Antwort)

Auch damit verbunden ist die ewige Frage der magic_quotes... Wie soll mann alle verfügbare magic_quotes Konfigurationsoptionen auf php.ini am besten setzten? magic_quotes soll ab PHP 6 nicht mehr da sein: http://www.php.net/~derick/meeting-notes.html#magic-quotes d.h. man sollte jetzt schon eine bessere Lösung dafür finden :)
Kommentar (1)
09 08 2007
#3 ahi (Antwort)

Ich würde am Anfang des Scripts eine Funktion einbauen, die überprüft ob magic_quotes eingeschaltet ist oder nicht. Wenn eingeschaltet sollte man es mit stripslashes wieder entfernen. Somit kann man im Programm immer addslashes benutzen wenn nötig.
Kommentar (1)

Kommentar schreiben


Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss um dieses Verfahren anzuwenden.
CAPTCHA

Sie können [geshi lang=LANG][/lang] Tags verwenden um Quellcode abhängig von der gewählten Programmiersprache einzubinden