Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Webprogrammierung und Sicherheit

Mitglied: Raphael

Raphael (Level 1) - Jetzt verbinden

01.06.2006, aktualisiert 09.01.2009, 20858 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
Ähnliche Inhalte
Sicherheit
Microsoft und Skype: Sicherheit
Information von kgbornSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Windows Server

SQL Server Hardening Guide - Sicherheits Guide

Tipp von 116480Windows Server3 Kommentare

Server Hardening: SQL Server Installation M01 Nur die benötigten Komponenten installieren Sind nur die minimalsten benötigten Komponenten installiert, können weniger ...

Datenschutz

Einstellung zum Thema Sicherheit bei einem großem Anbieter von medizinischer Abrechnungssoftware

Information von StefanKittelDatenschutz6 Kommentare

Hallo, ich habe heute Morgen eine Mail von einem Kunden bekommen die mich echt aus den Socken gehauen hat. ...

Sicherheit

BSI startet "Cyber-Sicherheits-Umfrage" 2017

Information von BassFishFoxSicherheit2 Kommentare

Und wieder einmal fragt das BSI. Natuerlich sagen die Leute nein, denn sie wissen doch nicht, dass sie schon ...

Neue Wissensbeiträge
Ausbildung

Linux-Ausstieg in Niedersachsen - Windows statt Bugfix

Information von StefanKittel vor 1 TagAusbildung9 Kommentare

Sind ja nur Steuergelder

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 3 TagenSpeicherkarten3 Kommentare

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Sicherheit

Diverse D-Link-Router durch drei Schwachstellen kompromittierbar

Information von kgborn vor 3 TagenSicherheit

Hat jemand D-Link-Router in Verwendung? Einige Modelle sind sicherheitstechnisch offen wie ein Scheunentor. Äußerst unschöne Sache, aber nichts neues ...

Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 3 TagenHardware3 Kommentare

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Heiß diskutierte Inhalte
Vmware
Offene LDAP-Server in AS
gelöst Frage von obi-wan-kenobiVmware18 Kommentare

Hallo alle Miteinander, ich habe ein Problem, unsere VM-Ware Appliance (Version. 6.5.0.10000) ist scheinbar angreifbar. Wir haben eben die ...

SAN, NAS, DAS
Nas mit USB und LAN gleichzeitig zugreifen
gelöst Frage von MarkBeakerSAN, NAS, DAS16 Kommentare

Hallo zusammen, ich suche eine Art NAS, womit ich via LAN und USB zugreifen kann. Folgender Aufbau ist gedacht: ...

Suche Projektpartner
Debian 9.5 32 Bit und PHP 7 Fehlerbeseitigungen
Frage von zeroblue2005Suche Projektpartner11 Kommentare

Hallo Zusammen, ich habe eine VM auf Basis von ESXI am laufen. Dieser wurde unter Debian 7 installiert mt ...

Windows Server
Zertifikat RemoteDesktop hinterlegen
Frage von Green14Windows Server10 Kommentare

Hallo zusammen. ich habe mehrere Server (WinSrv 2016). Die Server sind in keiner Domäne und keine Terminalserver. Ich verbinde ...