Webprogrammierung und Sicherheit

Mitglied: Raphael

Raphael (Level 1) - Jetzt verbinden

01.06.2006, aktualisiert 09.01.2009, 21268 Aufrufe, 1 Danke

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


Einleitung

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.

Grundlagen

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.

Was 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.

Wie 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

Wie 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:

Was 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
Heiß diskutierte Inhalte
Windows 10
Windows 7 pro Lizenz nutzen für Windows 10
lukas0209Vor 1 TagFrageWindows 1015 Kommentare

Hallo Community, ich versuche seit einigen Wochen unser Netzwerk von Windows Server 2008 R2 Standard auf Windows Server 2016 Essentials um, welches eine städtische ...

Windows Netzwerk
Telefone im Netzwerk bekannt machen
jannik0205Vor 1 TagFrageWindows Netzwerk13 Kommentare

Hallo Zusammen, In unserem Unternehmen gibt es eine Telefonanlage mit eigenem Telefonienetz (192.168.5.X). Schließe ich ein Telefon an eine Netzwerkdose, bekommt es vom DHCP- ...

Windows Netzwerk
WTS-Anmeldung per RDP am Wochenende verbieten?
MuM2810Vor 1 TagFrageWindows Netzwerk9 Kommentare

Hallo zusammen, wir haben bei uns Windows Server 2016 mit 2 Terminal Servern im Einsatz. Wie aus dem Titel schon ersichtlich ist, ist bei ...

Netzwerkgrundlagen
Frage zu LWL Kabel
gelöst NominisVor 1 TagFrageNetzwerkgrundlagen6 Kommentare

Hallo, ich habe nur mal eine kurze Verständnisfrage. Es geht um die Verbindung bzw. Anbindung von Switches (Cisco 48Port 10/100/1000 MBit mit 2 SFP+ ...

Microsoft
Microsoft Teams - "bitte wenden Sie sich an (. . .) um Teams für "domäne" zu aktivieren" nur bei einem Benutzer
eastfrisianVor 1 TagFrageMicrosoft6 Kommentare

Hallo zusammen! Wir haben bei uns Teams als Hybridversion eingeführt (Exchange on premise, AD-Sync in die Cloud) und nutzen Teams über das basic-Abonnement. Während ...

Microsoft
Staatsanwaltschaften verschicken Vorladungen in Sachen Windows 10 Lizenzkeys
kgbornVor 11 StundenInformationMicrosoft3 Kommentare

Nur zu Info für die Käufer der eBay-Schnäppchen - neuer Fall Staatsanwaltschaften verschicken Vorladungen in Sachen Windows 10 Lizenzkeys

Netzwerke
Keine Versand von Mails von der Firmen zur Privaten E-Mailadresse möglich
blaub33r3Vor 1 TagFrageNetzwerke6 Kommentare

Hallo zusammen, wieso kommt der User keine Mails mehr? Der Sender wird als Spamer betrachtet? 1. Mailing an andere Privaten Adressen / Firmen Adressen ...

Netzwerke
Netzwerklaufwerk - Nur Lesen (Streamen)
CryexXVor 1 TagFrageNetzwerke8 Kommentare

Hallo, ich hab mal ne Frage und hoffe auf Lösung. Mir schießt aktuell keine in den Kopf :( Ich möchte ein Netzlaufwerk freigeben. Auf ...