Immer schön sicher

Sichere ASP Programmierung, sichere Webseiten

Bei der Sicherung von Webseiten denkt man schnell an Defacing, vielleicht auch an Würmer oder unsichere Webserver. Diese Aspekte machen aber nur einen Teil der Sicherheitsüberlegung aus um die man sich bei der Implementierung von Programmierung einer sicheren Webseite kümmern muss. Um eine Webseite tatsächlich sicher zu machen kann man nicht einfach irgend ein Programm oder eine Firewall einsetzen: Man muss deutlich mehr tun.

Fehler Nummer eins ist der Verlass auf eine Firewall: Eine solche wird vor dem Webserver installiert, und danach wähnt man sich in Sicherheit. Das ist natürlich Unsinn. Eine Firewall ist prima dafür geeignet Ports zu blocken und Pakete auf Basis von Regeln zu blockieren. Sie wird sich allerdings meist nicht um das Filtern von per http eingehender Traffic kümmern, doch solche Traffic kann durchaus ihre gefährlichen Seiten haben. Ähnlich wie eine Firewall ist auch die Verwendung von Sicheren Protokollen kein Weg zur Sicherheit: SLL mag Pakete prima verschlüsseln, kümmert sich aber nicht darum dass Daten die Benutzer einer Webseite eingeben können, validiert werden. Diese Daten werden aber an Programme weitergegeben – richtig formuliert kann man damit durchaus auch mal die Datenbank auf dem Server löschen, Programme starten die nicht gestartet werden sollen und ähnliches tun.

Das soll nicht bedeuten das Firewalls oder SSL nicht sinnvoll sind – es soll nur bedeuten dass der Einsatz einer Firewall schlicht und ergreifend nicht ausreicht. Um eine Site sicher zu bekommen muss man sich statt dessen um verschiedene grundlegende Dinge kümmern, und einige davon ziehen sich sehr weit in das Programmieren der Site hinein.

Sicherheits-Grundsteine

Ein Grundstein der Webseiten - Sicherheit ist die Authentifizierung. Dabei geht es darum klarzustellen, um wen es sich bei einem Client handelt: Der Client kann ein angemeldeter User, ein Dienst oder ein anderer Computer sein.

Der zweite Grundstein der Sicherheit ist die Autorisierung. Dabei geht es darum was ein gegebener Client tun darf: Ist ein Client authentifiziert, weiss man um wen es sich dabei handelt. Die Autorisierung stellt dann klar was dieser eindeutig identifizierte Client tun darf, welche Rechte er also in welchem Kontext besitzt.

Ein weiterer Grundstein ist das Sicherstellen der Privatsphäre in einem gegebenen Kontext. Dabei geht es darum dass Daten privat bleiben: Nicht autorisierte Personen sollen nicht in der Lage sein Traffic mitzuhören oder auf gespeicherte Daten zuzugreifen, die einer anderen Person gehören oder nur in einem anderen Kontext zur Verfügung stehen können. Dabei geht es natürlich auch darum dass die Datenintegrität gewahrt bleibt, denn nicht autorisierte Personen sollen auch keine Daten verändern können die ihnen nicht gehören.

Schließlich muss auch noch die Verfügbarkeit von Daten und Diensten Teil von Sicherheitsüberlegungen sein: Es gibt eine ganze Menge an Personen, deren hauptsächliches Ziel die Ausführung von Denial-of-Service Attacken sind. Sind aber authentifizierte Personen deshalb nicht mehr in der Lage auf die Dienste einer Webseite zuzugreifen, hat das den gleichen Effekt wie das Löschen der Inhalte durch einen Einbrecher.