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

Mean.io aggregate assets in the correct order

Im working with mean.io framework which builds some little helper around the mean stack, to make things faster. If you aggregate an assets, it helps a lot to know that you can easily set things into the correct order with the option weight. The default weight is 0 when you dont set this option: mean.io framework I18n.aggregateAsset('js', 'lib/angular-translate/angular-translate.js',{absolute:true, weight:100 });I18n.aggregateAsset('js', 'lib/angular-translate-storage-local/angular-translate-storage-local.js',{absolute:true, weight:101});I18n.aggregateAsset('js', 'lib/angular-translate-storage-cookie/angular-translate-storage-cookie.js',{absolute:true, weight:102});

Zertifizierte Online-Shops, trügerische Sicherheit!

Online Shopping Sicherheit Trusted Zertifikate gibt es mittlerweile wie Sand am Meer. Doch was taugt ein Zertifizierter Shop überhaupt. Was meinen die mit "trusted"...... ist "https" ?? Reicht dass schon ?? Ich habe mit das Zertifikat vom Tüv mal genauer unter die Lupe genommen. Und musste feststellen dass bei einigen Shops trotz (trusted, save, zertifiziert) und anderen ominösen Auszeichnungen. Es offensichtliche Sicherheitslücken gibt. Diese musste ich nicht suchen, sonder die sind mir geradezu ins Auge gesprungen. Bei ciao.de zum Bleistift ist XSS möglich. Und das ohne Probleme und Einschränkungen. XSS ist allgemein bei vielen Shops möglich. Am besten ist es für einen Angreifer, Shop mit community und einem einheitlichen Login. Es sind nicht nur mini Shops welche unsicher sind. Es sind OnlineShops von Beate-Uhse, Karstadt-Quelle etc dabei. Also nicht nur komische Läden wo niemand einkauft!! So wird es leicht gemacht Daten auszulesen, und man kann den XSS Code se

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