Direkt zum Hauptbereich

PHP Skripte absichern

Bei PHP ist es immer dann Kritisch sobald Benutzereingaben
erfolgen.
Durch SQL injection & co sind die meisten Entwickler schon
aufmerksam wenn Sie Benutzereingaben an eine Datenbank
weiterreichen. Leider setzt diese Aufmerksamkeit häufig aus
sobald die Daten nicht an die Datenbank sondern nur auf dem
Bildschirm wieder ausgegeben werden.

Als Beispiel nehmen wir hier mal ein Suchformular, wie bei google.
Bei einem Fehler, oder wenn das Skript nichts findet wird der
Suchstring wieder in das Suchformular eingesetzt und der
Benutzer sieht wieder das Suchformular mit seinem Suchwort im
Suchfeld. ( Download Beispielskript)


Genau in diesem Szenario sind viele noch zu Leichtsinnig. Ja die Daten
machen nichts am Server und Datenbank. Aber der Benutzer kann
hier Opfer einer XSS (Cross Site Scripting) Attacke werden.
Wenn die Benutzereingabe wie so oft nur schlecht oder garnicht geschützt
werden.

Sich nur auf das Modul Magic Quotes von PHP zu verlassen, sofern aktiviert,
reicht leider nicht aus. Es entfernt oder besser es escaped zwar ", ' \ und NULL
charactäre. Es macht den HTML Sonderzeichen aber nichts. Also
<, >
Mit diesen kann ich ebenfalls den input tag beenden. Aber alles nacheinander.

Hier stelle ich nun 2 Beispielhafte Formularverarbeitungen mit PHP vor.
Es soll dabei lediglich um die Benutzereingabe gehen und wie man sich am einfachsten und doch effektiv vor XSS Schützen kann.
Als erstes mal die Schlechte Verarbeitungsmethode:

$textinBoxU = $_GET['Text'];

Nur eine Zuweisung vom übergebenen Text. Ohne jede Überprüfung.
Dabei wäre der es besser folgendes in den Code zu schreiben:

$textinBoxU = htmlspecialchars($_GET['Text'] , ENT_QUOTES);

So damit wäre das Skript vor einem XSS Angriff relativ sicher. Ganz sicher ist
man ja nie, wer weiß was noch kommt.
Mit htmlspecialchars werden alle HTML Sonderzeichen in HTML-Code um.
Hier eine kleine gegenüberstellung. Oben die HTML Sonderzeichen und unten im HTML-Code damit jeder weiß was gemeint ist. Durch die Optionale Angabe von quote_style "ENT_QUOTES" gebe ich an dass auch das einfache Anführungszeichen
umgewandelt wird.


> < " '
&gt; &lt;   &quot;  &#039;


Ich habe hier noch ein kleines Beispielformular mit PHP Code um eigene
Experimente zu machen und vor allem um den Unterschied nochmals
aufzuzeigen. Also zwischen unsicher und sicher. Also dann auf gutes
Programmieren und vor allem auf sichereres Programmieren.


Weiterführende Links:

PHP Magic Quotes Modul, ab Version 6 ist es weg
PHP htmlspecialchars auf php.net
PHP htmlentities auf php.net


Die Downloads hier in meinem Blog laufen alle über den RapidShare Server.
Um die Daten herunterzuladen muss nichts bezahlt werden und man muss sich
auch nirgends Anmelden. Das hat den Sinn dass ich mir hier die Arbeit Spare ;-)

Kommentare

Beliebte Posts aus diesem Blog

Soziale Netze und die Sicherheit! Report Kwick!

Die Sozialen Netzwerke, neudeutsch: Social Networks, halten nicht allzu viel von Sicherheit. Vor allem müssten die Entwickler viel mehr für das Thema XSS Sensibilisiert werden. D enn Potentielle Angreifer finden jede Schwachstelle im System. Und wer lange genug sucht der wird imme r fündig. Es sollte den An greifern nur nicht allzu einfach gemacht werden. Kwick.de hatte bis zum 20.06.08 auch noch oder wieder ein Problem mit XSS. Betroffen waren so gut wie alle Suchformulare auf der Seite. Per zufall bin ich auf diesen Umstand aufmerksam geworden. Eines sei gesagt. Bei Kwick kann man sich nun getrost Anmelden denn die Sicherheitslücke wurde sofort behoben. Also eine sichere Sache. Andere Social Networks haben ähnliche XSS Probleme, eigentlich erschreckend viele. Die Namen möchte ich nicht nennen denn sonst rennen vielleicht ein Paar Dummys dahin und testen es gleich......... Nachdem ich dieses Problem dem Betreiber gemeldet hatte wurde es auch Postwendend behoben. Nur aus diesem Gru

Flexible Arbeitgeber sind schwer zu finden ;)

Unternehmen, fast schon egal welcher Größe verlangen nach flexiblen Arbeitskräften. Und schimpfen sich selbst flexibel und bieten gar sogenannte "Flexiblen Arbeitszeiten" an. Und das thema "Home Office" wird auch gerne mal groß auf die Fahne gemalt und man denkt sich als Bewerber: "na das ist doch mal eine tolle Firma, da will ich hin" Doch zumeist entpupt sich diese tolle flexible Unternehmung vor allem als eines, eine kleine Mogelpackung. Frei nach dem Motto: "schreiben können wir ja vieles". So erwarten die Firmen das ich flexibel bin, dann weißt man auf ein "Flexible Arbeitszeit hin", mit einem dicken aber ,  so wie die CSU zur EU, von 9 bis 16 Uhr ist aber Kernarbeitszeit. Aha. Das klingt jetzt total flexibel für mich. Bei einem Wochensoll von 40h kann ich also jeden Tag überlegen wann ich denn jetzt um 8 komme oder um 9, denn teilweise sollte man ja auch nicht vor 7 kommen, sonst macht man ja eine Überstunde jeden Tag. So