raphael
Goto Top

Webprogrammierung und Sicherheit

Worauf man als Webprogrammierer beim erstellen von Formularen, etc achten sollte bezüglich Sicherheit

back-to-topEinleitung

In der letzten Zeit habe ich immer wieder festgestellt, dass viele Webseiten eigene Logins oder ähnliches benutzen, welche zum Tei gravierende Sicherheitsmängel aufweisen. Aus diesem Grund schreibe ich nun hier eine Anleitung, in der Hoffnung einige Webprorammierer für diese Thematik sensibilisieren zu können.

back-to-topGrundlagen

Das Grundproblem ist, dass viele Webprogrammierer zuwenig Ahnung von der Technik haben wenn es um Datenübertragung im Web geht. Ein Webprogrammierer muss ja nicht gleich das ganze Protokoll kennen. Aber er sollte immerhin das Grundprinzip kennen. Es muss insbesondere Wissen wo und wie Daten zum Beispiel manipuliert werden können.

back-to-topWas sind Manipulationen?

Bei Manipulationen handelt es sich in diesem Fall um Veränderungen von Daten welche vom Server an den Benutzer oder vom Benutzer an den Server gesendet werden.

back-to-topWie kommt es zu Manipulationen

Diese treten zum einen Unbeabsichtigt auf (zum Beispiel durch einen Proxy, welcher bestimmte Sachen filtert oder ähnliches) und zum anderen natürlich auch Beabsichtigt. Ein Hacker kann zum Beispiel einen eigenen Proxy bei sich installieren mit welchem er Die Daten zuerst beabreiten kann, bevor er sie an seinen Browser weiter sendet. Auf der anderen Seite kann er natürlich auch die Anfragen die der Browser an den Server sendet manipulieren. Dies ist zum Beispiel durch WebScarab möglich, welches durch The Open Web Application Security Project (OWASP) zur verfügung gestellt wird. Eine andere möglichkeit ist zum Beispiel mit Browser-Plugins (Tamper für Firefox) und ähnlichem. Für einen Programmierer wird es ziemlich mühsam sich nun mit diesen Programmen vertraut zu machen. Es gibt auch weitaus einfachere Methoden als einen Proxy, eben zum Beispiel Browser-Plugins.
Eine weitere Möglichkeit bieten Userscripts. Mit ihnen lassen sich Webseiten beliebig verändern, während sie betrachtet werden. Über Greasemonkey (für Firefox) oder Trixie (für den IE) lassen sich diese Scripts in den Browser integrieren. Ich habe ein Beispiel-Script auf meine Homepage gestellt, welches deaktivierte Felder und Buttons aktiviert, sowie versteckte Felder anzeigt. Ihr findet das Script hier: http://www.black-silence.ch/userscripts/formhelp.user.js

back-to-topWie funktionieren Manipulationen genau bzw. was ist daran Schlimm?

Das wichtigste für Programmierer kommt nun in diesem Abschnitt. Ich versuche kurz zu erklären was an diesen Manipulationen genau eine Sicherheitslücke darstellt.
Im Grunde genommen dürfen solche Manipulationen nichts machen. Dazu muss der Code der Webseite (sei das ASP, PHP oder Perl) entsprechend programmiert sein. Ist dies nicht der Fall, können Hacker unter umständen Dinge anstellen die man nicht will. Ich gebe ein Beispiel:

Auf einer Homepage gibt es eine Kundenverwaltung. Wenn der Admin sich einlogt, kann er durch alle Benutzer Blättern und durch Buttons einzelne Benutzer zum Beispiel löschen. Bei den Normalen Benutzer wird dann der Button einfach grau (also deaktiviert). Wenn ein normaler Benutzer nun diesen Button aktivieren kann (oder zumindest seinem Browser vorgaukeln kann der Button sie aktiviert), dan hat der Benutzer quasi Adminrechte.

Ein anderes Beispiel:

Wieder eine Benutzer-Verwaltung. Es wird eine Liste ausgegeben wo jeder Benutzer aufgeführt ist. 2 Felder eines für seinen Namen und eines (mit sternchen) für das Passwort welches aus der Datenbank eingefüllt wird. Eigentlich wäre das Passwort ja nicht lesbar (sind ja nur Sternchen ;)) wenn man aber im Quelltext nachschaut steht es im Klartext da.

Dies sind viele kleine Details ... im Grunde genommen sind einzelne solche Punkte nicht schlimm ... es kann aber unter Umständen dazu führen, dass ein Benutzer mehr machen kann als er sollte.

Ein anderes Problem können versteckte Felder sein in welchen bestimte Informationen übertragen werden (wie Session-IDs, Rechte, usw).
Auf versteckte Felder sollte unbedingt verzichtet werden, sofern es nicht anders geht. Vorallem sollten Rechte nicht über versteckte Felder übertragen werden. Was hier noch erwähnt werden sollte sind die Cookies. Auch ihn ihnen werden manchmal sensible Informationen gespeichert. Cookies können eben so bearbeitet werden die so ziemlich jede information die Client-Seitig gespeichert wird.

Hier kommen wir langsam zum nächsten Thema:

back-to-topWas kann man dagegen machen?

Als erstes: möglichst wenig Informationen in Cookies und versteckten Feldern, etc speichern. So viel wie möglich auf Serverseitige Variabeln (Session-Variabeln oder ähnliches) verlagern. Dies schliesst Manipulation im Grunde genommen aus.
Als zweites: Jede Eingabe die von einem Benutzer kommt muss überprüft werden ob sie auch zulässig ist. (Alles ist Böse, solange nicht das Gegenteil bewiesen ist)
Drittens: Knöpfe die ein Benutzer nicht drücken darf muss er auch nicht sehen, also sollten sie gar nicht erst angezeigt werden
Viertens: Felder in die man nicht reinschrieben darf sollten weggelassen werden und der Text sollte direkt drgestellt werden. (Wenn man einen Rahmen darum herum will kann man ihn ja mithilfe einer Tabelle oder CSS anzeigen)
So ... ich denke die grundlegensten Dinge wurden gesagt. Das Thema ist riesig und man könnte fast endlos weiterschreiben.
Ich hoffe der Text war einigermassen verständlich und ich konnte ein paar Denkanstösse geben.

Viele Grüsse

Content-Key: 33439

Url: https://administrator.de/contentid/33439

Printed on: April 19, 2024 at 02:04 o'clock