Web Application Security Tips (V1.00-2. April 2004)



Ähnliche Dokumente
Schwachstellenanalyse 2012

> Internet Explorer 8

Erste Hilfe. «/IE Cache & Cookies» Logout, alte Seiten erscheinen, Erfasstes verschwindet?

robotron*e count robotron*e sales robotron*e collect Anmeldung Webkomponente Anwenderdokumentation Version: 2.0 Stand:

Inhalt: Ihre persönliche Sedcard... 1 Login... 1 Passwort vergessen... 2 Profildaten bearbeiten... 3

> Internet Explorer 7

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar ZID Dezentrale Systeme

Installationsanleitung SSL Zertifikat

Änderung des Portals zur MesseCard-Abrechnung

Session Management und Cookies

Sparkasse Vogtland. Secure Datensicherheit im Internet. Kundenleitfaden. Sparkasse Vogtland. Kundeninformation Secure 1

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version Deutsch

Guide DynDNS und Portforwarding

Step by Step Webserver unter Windows Server von Christian Bartl

Synchronisations- Assistent

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten

EDI Connect goes BusinessContact V2.1

Adressen der BA Leipzig

Sicherheit in Webanwendungen CrossSite, Session und SQL

GEORG.NET Anbindung an Ihr ACTIVE-DIRECTORY

Anleitung zum Computercheck Windows Firewall aktivieren oder eine kostenlose Firewall installieren

Wählen Sie bitte START EINSTELLUNGEN SYSTEMSTEUERUNG VERWALTUNG und Sie erhalten unter Windows 2000 die folgende Darstellung:

Anleitung BFV-Widget-Generator

Benutzerhandbuch. Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer.

Einrichtung Ihrer PIN für die Online-Filiale mit mobiletan

Kurzanleitung BKB-E-Banking-Stick

Öffnen Sie den Internet-Browser Ihrer Wahl. Unabhängig von der eingestellten Startseite erscheint die folgende Seite in Ihrem Browserfenster:

FTP-Leitfaden RZ. Benutzerleitfaden

plus Flickerfeld bewegt sich nicht

Registrierung am Elterninformationssysytem: ClaXss Infoline

FTP-Server einrichten mit automatischem Datenupload für

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Erweiterung AE WWS Lite Win: AES Security Verschlüsselung

Benutzeranleitung Web Login (Internetzugang an Öffentlichen Datendosen und in Studentenwohnheimen )

Zur Bestätigung wird je nach Anmeldung (Benutzer oder Administrator) eine Meldung angezeigt:

Guideline. Facebook Posting. mit advertzoom Version 2.3

Fachhochschule Fulda. Bedienungsanleitung für QISPOS (Prüfungsanmeldung, Notenspiegel und Bescheinigungen)

System-Update Addendum

ICS-Addin. Benutzerhandbuch. Version: 1.0

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

Lizenzen auschecken. Was ist zu tun?

Dokumentenkontrolle Matthias Wohlgemuth Telefon Erstellt am

TimeMachine. Time CGI. Version 1.5. Stand Dokument: time.odt. Berger EDV Service Tulbeckstr München

-Verschlüsselung mit Geschäftspartnern

s-sparkasse Verlassen Sie sich darauf: giropay ist sicher. Sparkassen-Finanzgruppe

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

> Mozilla Firefox 3. Browsereinstellungen optimieren. Übersicht. Stand Juli Seite. Inhalt. 1. Cache und Cookies löschen

Verwendung des IDS Backup Systems unter Windows 2000

Sicherer Mailversand des Referats Automatisiertes Auskunftsverfahren (IS14 der Bundesnetzagentur)

Lizenz-Server überwachen

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

BAYERISCHES STAATSMINISTERIUM DES INNERN

Datensicherung. Beschreibung der Datensicherung

Clientkonfiguration für Hosted Exchange 2010

Serviceanweisung Austausch Globalsign Ausstellerzertifikate

Kurzanleitung SEPPmail

SharePoint Demonstration

Firmware-Update, CAPI Update

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

VDW Statistik Portal Häufig gestellte Fragen. Version 1.2 ( Katharina Düngfelder & Markus A. Litters) Vorwort

mysoftfolio360 Handbuch

meine-homematic.de Benutzerhandbuch

Installationsanleitung dateiagent Pro

Benutzeranleitung Superadmin Tool

-Verschlüsselung mit S/MIME

> Mozilla Firefox 3.5

2. Installation unter Windows 8.1 mit Internetexplorer 11.0

Datenumzug mit dem Datenumzugsassistenten

Wissenswertes über LiveUpdate

Sicherheitszertifikat überprüfen. 128-Bit-Verschlüsselung. Passwort und PIN-Code für den Kartenleser. Schutz vor Manipulationen

Elektronischer Kontoauszug

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Handbuch zum Up- und Downloadbereich der Technoma GmbH

Powermanager Server- Client- Installation

Elektronischer Kontoauszug

A B A S T A R T Fehlerbehebung

Anleitung zur Konfiguration eines NO-IP DynDNS-Accounts mit der TOOLBOXflex-3.2

TECHNISCHE INFORMATION LESSOR LOHN/GEHALT BEITRAGSNACHWEIS-AUSGLEICH BUCH.-BLATT MICROSOFT DYNAMICS NAV

Umstellung einer bestehenden T-Online Mailadresse auf eine kostenlose T-Online Fre -Adresse

Formular»Fragenkatalog BIM-Server«

5. Testen ob TLS 1.0 auf Ihrem System im Internet-Explorer fehlerfrei funktioniert

Tutorial -

Beschaffung mit. Auszug aus dem Schulungshandbuch: Erste Schritte im UniKat-System

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Leitfaden zur Nutzung des System CryptShare

Anleitungen zum KMG- -Konto

Verwendung des Terminalservers der MUG

etermin Einbindung in Outlook

Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung

BusinessMail X.400 Webinterface Gruppenadministrator V2.6

Internationales Altkatholisches Laienforum

Tutorial Windows XP SP2 verteilen

Kurzanleitung zum Einrichten des fmail Outlook Addin

Transkript:

Web Application Security Tips (V1.00-2. April 2004) Dieses Dokument einschließlich aller Teile ist urheberrechtlich geschützt. Die unveränderte Weitergabe (Vervielfältigung) des Dokuments ist ausdrücklich erlaubt. Jede weitergehende Verwertung ausserhalb der engen Grenzen des Urhebergesetzes ist ohne Zustimmung des Ingenieurbüro David Fischer GmbH unzulässig und strafbar. 2004 Ingenieurbüro David Fischer GmbH, Lindenstrasse 21, 4123 Allschwil, Schweiz In vielen frei verfügbaren Quellen wie z.b. dem BSI IT-Grundschutzhandbuch finden Sie qualifizierte Empfehlungen zum sicheren Betrieb von Netzwerken, Betriebssystem und Datenbanken. Konkrete Vorgaben zur sicheren Programmierung und Konfiguration von Web Applikationen sind aber nach wie vor ein Spezialgebiet, welches von anerkannten Standards naturgemäss oft nur allgemein behandelt wird. Die hier publizierten Web Application Security Tips sollen ein Teil dieser Lücke schliessen und beziehen sich hauptsächlich auf die sichere Programmierung und Konfiguration von Web Applikationen wie z.b. E-Commerce Shops, Web Portale oder E-Banking Lösungen. Die Empfehlungen sind aus der täglichen Praxis entstanden und bewusst in der Sprache der Programmierer formuliert, jedoch soweit wie möglich Technologie-neutral gehalten. Für den oft etwas imperativen Text möchten wir uns im Voraus entschuldigen. Überlegen Sie immer auch selbst, ob der entsprechende Vorschlag für Sie Sinn macht. Wir sind jedoch fast sicher, dass Sie bei der genauen Durchsicht - nebst vielen bekannten Empfehlungen - auch eine Reihe von neuen, interessanten Security-Aspekten entdecken. Seite 1 von 17

Inhalt: I. Basic Security: minimale Schutzmassnahmen für Web Applikationen 1. Server unprivilegiert starten 2. Default MIME-Type dekonfigurieren 3. Tailoring der Server Funktionalitäten realisieren 4. Keine internen Informationen im Fehlerfall preisgeben 5. Log-Files und Applikation gegen Download sichern 6. Alle CGI und Form Input-Parameter bei jedem HTTP Request neu prüfen 7. Daten-Import von externen Quellen auch prüfen 8. Unzulässige Requests verzögern 9. Unzulässige Requests separat aufzeichnen 10. Server Administrations-Port von Web Service-Port trennen 11. Betrieb ohne Log-Aufzeichnungen verunmöglichen II. Standard Security: für persönliche Daten und einfache Geschäftstransaktionen 12. Nur verschlüsselte HTTPS-Verbindungen verwenden 13. Web Applikationen nicht im Browser integrieren 14. Nur offiziell ausgestellte SSL Server-Zertifikate verwenden 15. Session(-ID) beim Login wechseln 16. Temporäre Cookies als Session-Kontext erzwingen 17. Keine zusätzlichen Session-Kontexte verwenden 18. Keine sensitiven Daten in permanenten Cookies speichern 19. Kein initiales Standard-Passwort setzen 20. Passwort-Speicherung im Web Browser unterdrücken 21. Passwort-Änderung zulassen 22. Logout ermöglichen 23. Passwörter nur als Hashwert speichern 24. Benutzer Accounts bei mehrmaligem falschen Login automatisch sperren 25. Zugriffsverletzungen des Rollenkonzepts immer prüfen und loggen 26. Keine Preise als CGI- oder hidden Formular-Parameter übergeben 27. Login- und Logout-Vorgang der Benutzer protokollieren 28. Business-Transaction Log separat führen 29. Log-Files nicht auf dem eigenen Rechner speichern 30. Remote IP-Adresse vom Reverse Proxy an den Applikationsserver weiterleiten III. High Security: für E-Banking sowie für besonders schützenswerte Daten 31. Verschlüsselungs-Tiefe und -Protokoll kontrollieren 32. Immer vollständige Zertifikats-Kette des SSL Server-Zertifikats übertragen 33. SSL Client-Zertifikate verwenden 34. SSL Server-Zertifikat in spezieller Hardware speichern 35. "Trusted" SSL Library verwenden 36. Starke Authentisierung verwenden 37. URL Whitelist-Filter implementieren 38. Keine Hyperlinks auf fremde Web-Seiten integrieren 39. Session-Timeout kurz halten 40. Keine endlosen Surf-Sessions erlauben 41. Mehrfaches Login des gleichen Benutzers ausschliessen 42. Initial-Authentisierung nicht über ungesicherte Kanäle übertragen 43. Gesperrte Accounts nur nach sorgfältiger Authentisierung wieder entsperren 44. Kryptologische Zufallszahlen-Generatoren verwenden 45. Limiten setzen und Risk-Management implementieren 46. GMT als applikations-interne Zeitbasis verwenden 47. Anonyme Benutzer von authentisierten Benutzern trennen Seite 2 von 17

48. Schutzmassnahmen auf Kundeseite fördern 49. Benutzeranfragen und Störungsmeldungen richtig behandeln 50. Angriffsversuche periodisch Auswerten 51. Shutdown-Kriterien und Notfall-Konzepte vorbereiten IV. Weitere Empfehlungen 52. Alle Team-Mitglieder sensibilisieren 53. Qualitätssicherung mit einbeziehen 54. Umsetzung von Security-Massnahmen bei Aufwandschätzungen mit berücksichtigen 55. Auf ausgewogene Sicherheit achten 56. Hilfe anfordern, Übersicht behalten und Risiken delegieren V. Hyperlinks VI. Feedback Seite 3 von 17

I Basic Security: minimale Schutzmassnahmen für Web Applikationen Dieses Unterkapitel beschreibt grundlegende Schutzmassnahmen, welche in jeder Web Applikation realisiert werden sollten. Selbst wenn diese "nur" einen öffentlichen Bereich enthält und sich die Benutzer nicht anmelden müssen. 1. Server unprivilegiert starten Der Server sollte immer unter einem unprivilegierten System-Account gestartet werden. Dies verhindert, dass bei einer eventuellen Sicherheitslücke wie z.b. "Buffer-Overflow" der Angreifer direkt die volle Kontrolle über das gesamte Betriebssystem erhält. Bei den HTTP Server-Ports unter 1024 ist ein Starten unter einem privilegierten System-Account (leider) nötig, doch kann in der Konfiguration des Servers (fast) immer noch ein zusätzlicher, unprivilegierter Account spezifiziert werden, unter dessen Kontext die eigentliche Verarbeitung der HTTP Requests erfolgt. 2. Default MIME-Type dekonfigurieren Konfigurieren Sie den Server so, dass dieser bei statischem Content (z.b. Bilder, Text-Files), im Zusammenhang mit unbekannten Datei-Erweiterungen (z.b. ".dat"), nicht einfach die verlangte - und gefundene - Ressource mit einem Default-MIME Type wie z.b. "TEXT/PLAIN" liefert, sondern in einem solchen Fall stattdessen eine Fehlermeldung an den Endbenutzer ausgibt. Durch die genaue Kontrolle der zulässigen MIME-Typen, welche vom Server überhaupt geliefert werden können, verringern Sie die Wahrscheinlichkeit ganz erheblich, dass unerwünscht interne Daten preisgegeben werden. 3. Tailoring der Server Funktionalitäten realisieren Deaktivieren bzw. dekonfigurieren Sie auf dem Server gezielt alle Funktionalitäten, welche nicht benötigt werden. Beispiel: falls eine Remote-Administration nicht nötig ist, so sollten Sie diese dekonfigurieren. Dekonfigurieren Sie im Server auch die Unterstützung exotischer HTTP Request Methoden wie z.b. HEAD, TRACE und DELETE. Üblicherweise wird nur GET und POST benötigt. Falls sich unerwünschte HTTP Request Methoden nicht direkt dekonfigurieren lassen, so stehen oft alternative Möglichkeiten/Schnittstellen auf dem Server zur Verfügung, die HTTP Request Methode zu Prüfen und gegebenenfalls die Netzwerk-Verbindung zum Web Browser ohne Antwort zu schliessen. 4. Keine internen Informationen im Fehlerfall preisgeben Konfigurieren bzw. Programmieren Sie den Server so, dass beim Auftreten eines Fehlers nie interne Fehler-Details wie z.b. einen Stack-Dump oder lokale Umgebungsvariablen im Browser Fenster preisgegeben werden. Bei Applikations- Servern sollten Sie stattdessen nur eine eindeutige Fehler-Id ausgeben, welche mit einer genauen, internen Fehler-Aufzeichnung korrespondiert. Wichtig ist auch, dass der fehlerhafte URL-Request nicht in der Antwort repetiert wird, denn dies kann eventuell dazu führen, dass der Server seine eigene HTML- Antwort vor der Ausgabe selbst (dynamisch) interpretiert und über diesen Mechanismus sich z.b. beliebige Server Side Includes oder Java Server-Pages ausführen lassen (mittels server-seitigem Script Code in der Anfrage). 5. Log-Files und Applikation gegen Download sichern Legen Sie die Log-Files des Servers nicht im HTTP Request Path ab, damit diese in jedem Fall vor einem unerwünschten Download geschützt sind. Konfigurieren Sie zudem den Server so, dass direkt ausführbarer Code niemals herunter geladen Seite 4 von 17

werden kann. Deaktivieren Sie unbedingt auch "Directory-Browsing". 6. Alle CGI und Form Input-Parameter bei jedem HTTP Request neu prüfen Prüfen Sie die Input-Parameter bei jedem HTTP Request. D.h. es darf nicht möglich sein, HTML-, Javascript-, ActiveX oder SQL-Code als Input in die Applikation einzuschleusen. Es besteht sonst die Gefahr, dass dieser Code direkt von der Web Applikation ausgeführt wird (z.b. bei SQL) bzw. dass über die Datenbank der Web Applikation dieser Code im Kontext eines anderen Benutzers in dessen Web Browser ausgeführt wird. Beachten Sie auch, dass der Wert von HTML Form Feldern auf Client-Seite sehr einfach "böswillig" gefälscht werden kann und z.b. in Formular Input-Feldern, in welchen sich üblicherweise nur Zahlen selektieren lassen, Cross-Scripting oder SQL-Code auftritt. Besondere Beachtung benötigt auch die oft unterlassene Server-Seitige Prüfung von hidden HTML Form-Parametern oder Parametern von Auswahllisten, Radiobuttons und Checkboxen. 7. Daten-Import von externen Quellen auch prüfen Prüfen Sie beim automatisierten Datenimport von externen Quellen die Daten genau so sorgfältig, wie die Input-Parameter eines HTTP Requests (siehe vorhergehendes Unterkapitel). Dies ist besonders wichtig, wenn die importierten Daten bzw. Fragmente davon direkt im Browser-Fenster Ihrer Endbenutzer ausgegeben werden. Bei einem Unterlassen dieser Massnahme besteht sonst die Gefahr, dass über den Daten- Import böswilliger Code im Browser-Context der Endbenutzer ausgeführt wird. Dazu Ergänzend sollte bei dynamischen erzeugten HTML Text-Fragmenten - welche z.b. aus einer Datenbank stammen - deren Inhalt immer über eine Wrapper-Methode bzw. -Funktion ausgegeben werden, welche alle "exotischen" ASCII-Zeichen wie z.b. ", &, <, >, ", ' und : vor jeder Ausgabe konsequent in die entsprechenden dezimalen HTML Unicode-Zeichen umcodiert (z.b. &#039; statt '). Dadurch stelle Sie sicher, dass ein ausgegebener Text niemals als Script von einem Web Browser interpretiert wird, sondern in jeden Fall "nur" dargestellt wird. 8. Unzulässige Requests verzögern Falls ein unzulässiger bzw. fehlerhafter URL-Aufruf erkannt wird, so sollte die entsprechende Fehlermeldung einige Sekunden (5..10) verzögert ausgegeben werden. Dadurch reduzieren Sie die Bandbreite von Hacking-Versuchen gegenüber der Web Applikation und verringern so die Wahrscheinlichkeit eines erfolgreichen Angriffs. 9. Unzulässige Requests separat aufzeichnen Zeichnen Sie unzulässige URL Requests in einer separaten Log-Datei auf - damit Sie die "Schwarzen Schafe" unter den Endbenutzern besser erkennen können. Zur Aufzeichnung gehört in jedem Fall die genaue Zeit, die remote IP-Adresse sowie das genaue URL des unzulässigen Requests. Bei angemeldeten Benutzern sollte auch die eindeutige Benutzer-Identifikation in die Aufzeichnung mit einfliessen. 10. Server Administrations-Port von Web Service-Port trennen Viele Server verfügen oft über interne "Service-Funktionalitäten", welche z.b. "online Konfigurationsänderungen" oder ein Remote-Shutdown über einen Web Browser zulassen. Trennen Sie den Server Port dieser internen "Service- Funktionalitäten" vom "gewöhnlichen" Server Port, damit Ihre Firewall diese "Service-Funktionalitäten" für (externe) Internet-Benutzer blockieren kann. Beachten Sie in diesem Zusammenhang, dass auch eine spezielle Authorisierung - besonders bei unverschlüsselten HTTP Verbindungen - kein wirksamer Schutz ist und ein Trennen der beiden Server Ports nie ersetzen kann. Seite 5 von 17

11. Betrieb ohne Log-Aufzeichnungen verunmöglichen Stellen Sie sicher, dass der Server seinen Dienst verweigert, wenn keine Log- Aufzeichnungen mehr geschrieben werden können (.z.b. wenn kein Disk-Platz mehr zur Verfügung steht). Seite 6 von 17

II Standard Security: für persönliche Daten und einfache Geschäftstransaktionen Dieses Unterkapitel enthält - ergänzend zur Basic Security - zusätzliche Sicherheits- Empfehlungen. Z.B. für E-Commerce Shops oder auch für Web Applikationen, welche die Speicherung und Verwaltung persönlicher Daten erlauben. 12. Nur verschlüsselte HTTPS-Verbindungen verwenden Verwenden Sie ausschliesslich das verschlüsselte HTTPS-Protokoll, um persönliche Daten zwischen dem Endbenutzer und der Web Applikation auszutauschen. Die Verschlüsselungs-Tiefe sollte dabei mindestens 128 Bit betragen (bzw. 112 Bits bei 3DES). 13. Web Applikationen nicht im Browser integrieren Liefern Sie die einzelnen Elemente eines Browser-Fensters (HTML-Seite inkl. referenzierte Bilder, HTML-Frames und Animationen, etc.) ausschliesslich von einem Web Server. Bei "zusammengesetzten" HTTP/HTTPS Seiten von mehreren Web Servern vermeiden Sie so die Warnung "Diese Seite enthält sowohl unsichere wie auch sichere Elemente". Ein Mix der Elemente, von zwei oder mehreren HTTPS Servern im gleichen Browser-Fenster, wird zur Zeit von keinem Browser richtig unterstützt - d.h. es wird vom Browser immer nur ein Server-Zertifikat dem Endbenutzer angezeigt, was verunmöglicht, dass der Benutzer die Gültigkeit aller Elemente einer Web Page verifizieren kann. Viele Web Browser kollabieren zudem unter solchen Bedingungen - einzig der Microsoft Internet Explorer "überlebt" eine solche Situation, jedoch auch nur unter der Voraussetzung, dass alle Server-Zertifikate vom Browser als "gültig" betrachtet werden und keine (implizite) Nachfrage nach der Gültigkeit beim Endbenutzer nötig ist. 14. Nur offiziell ausgestellte SSL Server-Zertifikate verwenden Verwenden Sie nie selbst erzeugten SSL Server-Zertifikate, da diese eine Warnungsmeldung im Web Browsers des Endbenutzers zur Folge haben. Die Endbenutzer gewöhnen sich unter solchen Umständen an diese Warnungsmeldung und ein realer Entschlüsselungs-Angriff mit einer "Man in the Middle" Attacke wird später nicht erkannt, d.h. es besteht die Gefahr, dass die vermeintlich gut verschlüsselte Verbindung zur Laufzeit von unberechtigten Dritten abgehört und dechiffriert wird. Das richtige Verhalten bei einer solchen Warnungsmeldung währe eigentlich, dass der Endbenutzer z.b. per Telefon beim Ihrem Support nachfragt, ob ein technischer Grund für eine solche Warnung besteht. Vermeiden Sie darum unbedingt solche Situationen. Das "Importieren" von selbst erstellten Root CA Zertifikaten in den Web Browser ist zwar auf den ersten Blick eine mögliche Lösung. Diese hat jedoch aus der Sicht des Endbenutzers den unerwünschten und eventuell (fatalen) Effekt, dass von nun an der Web Browser jedes abgeleitete (weitere) Zertifikat der neu importierten Root CA ungeprüft akzeptiert und so die Sicherheit gegenüber gefährlichen Web- Inhalten aus der Sicht des Endbenutzers stark reduziert wird. Verwenden Sie keine inoffiziellen Root CA Zertifikaten, welche von Software- Lieferanten zur Inbetriebnahme Ihrer Web Applikation abgegeben wurden. 15. Session(-ID) beim Login wechseln Falls Ihr Applikationsserver bereits vor dem Login-Vorgang eine anonyme Session erzeugt, so sollten der Applikationsserver während des Login-Vorgangs - nach der erfolgreichen Eingabe der Benutzer-Authentisierung - dem Benutzer eine neue Session(-ID) zuweisen. Dies ist besonders wichtig, wenn dabei gleichzeitig ein Übergang vom unverschlüsselten HTTP- Protokoll hin zum verschlüsselten HTTPS-Protokoll erfolgt. Seite 7 von 17

16. Temporäre Cookies als Session-Kontext erzwingen Erzwingen Sie durch eine entsprechende Programmierung und Konfiguration des Applikationsservers, dass ausschliesslich temporäre Session-Cookies als Session- Kontext verwendet werden. Sämtliche anderen Verfahren zum Halten des Session- Kontexts führen zu Sicherheitslücken oder sind zu vielen Web Browser-Produkten inkompatibel. Dekonfigurieren Sie auch URL-Rewriting als alternatives Verfahren zum Halten des Session-Kontexts. Programmieren Sie den Applikationsserver so, dass dieser Browser erkennt, bei denen temporäre Session-Cookies deaktiviert wurden: geben Sie in einem solchen Fall dem Endbenutzer eine Fehlermeldung mit der Aufforderung aus, temporäre Session-Cookies für Ihre Web Applikation zuzulassen. Stellen Sie sicher, dass das Secure-Flag im Session-Cookie gesetzt ist. 17. Keine zusätzlichen Session-Kontexte verwenden Halten Sie Ihre Programmierer dazu an, auch in schwierigen Situationen ausschliesslich die server-seitigen Speicher-Strukturen zum Führen von benutzerspezifischen Session-Informationen zu verwenden (sog. server-seitiger Session Context). Das Ergänzen eines Session-Cookies mit zusätzlichen, unabhängigen Kontext-Verfahren wie z.b. FORM/CGI-Parametern, oder auch zusätzlichen Cookies, enthält immer ein zusätzliches Sicherheitsrisiko. 18. Keine sensitiven Daten in permanenten Cookies speichern Speichern Sie in permanenten Cookies nur allgemeine, nicht sensitive Daten, wie z.b. die bevorzugte Sprache des Endbenutzers. Jedoch nie Daten, welchen einen direkten persönlichen oder geschäftlichen Bezug darstellen. 19. Kein initiales Standard-Passwort setzen Vergeben Sie für neue Benutzer-Accounts kein Passwort, welches immer gleich lautet oder aus dem Benutzer-Account Namen leicht abgeleitet werden kann. Verwenden Sie stattdessen ein zufällig generiertes Passwort welches für jeden neunen Benutzer unterschiedlich ist. Lässt sich dies aus betrieblichen Gründen nicht realisieren so müssen Sie mindestens erzwingen, dass ein neuer Benutzer beim der ersten Anmeldung sein Passwort ändern muss. 20. Passwort-Speicherung im Web Browser unterdrücken Verwenden Sie immer die Option AUTOCOMPLETE="off" bei Passwort- Eingabefeldern eines HTML-Formulars. Dadurch wird verhindert, dass das Passwort im Browser (lokal) permanent gespeichert wird, und ein unberechtigter Dritter, welcher sich an den PC setzt, das vom Browser gespeicherte Passwort "automatisch" benutzen kann. 21. Passwort-Änderung zulassen Geben Sie dem Benutzer immer die Gelegenheit, sein Passwort jederzeit - jedoch erst nach einer erfolgreichen Authentisierung - zu ändern. Verlangen Sie bei der Passwort-Änderung zur Sicherheit nochmals das alte Passwort. 22. Logout ermöglichen Geben Sie dem Benutzer immer die Gelegenheit, sich bei der Applikation abzumelden. 23. Passwörter nur als Hashwert speichern Speichern Sie die Passwörter der Benutzer nie im Klartext und auch nicht verschlüsselt in der Datenbank, sondern nur deren Hashwerte bzw. Prüfsummen (z.b. MD5 Algorithmus verwenden). Dadurch kann ein Passwort nicht ohne Seite 8 von 17

weiteres "intern" eingesehen werden oder versehentlich an unberechtigte Dritte "verraten" werden. Programmieren Sie den Login-Vorgang so, dass dieser die Prüfsumme des Passworts jeweils neu berechnet und diese danach mit der gespeicherten Prüfsumme vergleicht. 24. Benutzer Accounts bei mehrmaligem falschen Login automatisch sperren Bei mehrmaligen, fehlgeschlagenen Anmeldeversuchen eines Benutzers innert kürzerer Zeit sollte der Benutzer-Account automatisch gesperrt werden. Geben Sie auch nach einer automatischen Sperre die gleiche Fehlermeldung aus, wie wenn ein falsches Passwort eingegeben würde. Dadurch verhindern Sie mindestens eine gewisse Zeit, dass ein potentieller Angreifer die Sperre als solche erkennt und dadurch auf andere Arten von Attacken ausweicht. Je nachdem, wie schützenswert die Daten Ihrer Web Applikation sind, kann eine Sperre nur temporär für einige Zeit gelten - oder auch abschliessend sein. Zeichnen Sie jeden falschen Authentisierungs-Versuch eines Benutzers in den Logdaten auf, inkl. der genauen Zeit und der Remote-IP Adresse. 25. Zugriffsverletzungen des Rollenkonzepts immer prüfen und loggen Prüfen Sie bei jedem HTTP-Request (immer wieder), ob der Benutzer wirklich die Berechtigung hat, die entsprechende Aktion durchzuführen. Besonders dann, wenn im weiteren Sinn nur "Nummern" in Request-Parametern über die Berechtigung entscheiden. Es gibt auf dem Markt auch Tools (z.b. @stake WebProxy), mit denen sich hidden HTML Form-Parameter und andere HTTP-Request Daten zu Testzwecken leicht fälschen lassen. Damit können Sie auf einfache Weise selbst prüfen, ob die Web Applikation das Rollenkonzept und die Autorisierung des Benutzers immer - auf jeder Web Page - berücksichtigt. 26. Keine Preise als CGI- oder hidden Formular-Parameter übergeben Falls Sie einen E-Commerce Shop programmieren so achten Sie darauf, dass während der Zusammenstellung des Warenkorbs sowie auch bei Checkout/Bezahlen niemals die Preise sondern immer nur die Artikel-Nummer und die Anzahl Artikel als CGI- oder hidden Formular-Parameter dem nächsten URL- Aufruf übergeben werden - und berechnen Sie daraus den Totalpreis jeweils immer neu. Es besteht sonst die Gefahr, dass ein Kunde die HTTP-Parameter bzw. Preise zu seinen Gunsten fälscht und zu ungewollt tiefen Preisen einkauft. Führen Sie den Warenkorb falls immer möglich nur in einem Server-Seitigen Context. 27. Login- und Logout-Vorgang der Benutzer protokollieren Zeichnen Sie jede An- und Abmeldung eines Endbenutzers inkl. remote IP- Adresse und genaue Zeit auf. 28. Business-Transaction Log separat führen Trennen Sie das Business-Transaction Log, d.h. die Aufzeichnung der Geschäftstransaktionen, vom "gewöhnlichen" Applikations- und Fehler-Log. Der Nachvollzug von Geschäftstransaktionen wird so einfacher. Über längere Zeit gesehen sparen Sie auch Backup/Archiv-Kosten, da nur die Geschäftstransaktionen über Jahre gespeichert werden müssen. Eine gute Idee ist auch, das Business-Transaction Log direkt mittels Datenbank- Triggern zu realisieren und in der Datenbank selbst zu führen. Dies erlaubt u.a. die schnelle Suche nach Geschäftstransaktionen und bildet auch eine gute Grundlage für spätere statistische Auswertungen. Der Hauptnutzen aus Security-Sicht besteht bei der Verwendung von Datenbank-Triggern jedoch darin, dass Seite 9 von 17

Geschäftstransaktionen unter allen Umständen automatisch protokolliert werden. 29. Log-Files nicht auf dem eigenen Rechner speichern Leiten Sie den Log-Output des Applikationsservers und gegebenenfalls des vorgeschalteten Reverse-Proxys auf ein "write-only" Netzwerk-Device eines besonders sicheren "Log Servers" um, so dass die die Log-Dateien niemals lokal veränderbar sind. Dadurch sind die Log-Dateien auch bei einem Einbruch wesentlich besser geschützt, so dass das "Verwischen von Spuren" schwieriger bis unmöglich wird. Bei UNIX-Systemen sollte natürlich auch mit dem syslog so verfahren werden (syslogd) - und ebenso mit den Log-Dateien der Datenbank. 30. Remote IP-Adresse vom Reverse Proxy an den Applikationsserver weiterleiten Falls ein Reverse Proxy dem eigentlichen Applikationsserver vorgeschaltet ist, so sollte der Reverse Proxy so konfiguriert werden, dass dieser die remote IP- Adresse des Endbenutzers an den Applikationsserver weiterreicht. Damit im Log des Applikationsservers auch die ursprüngliche remote IP-Adresse des Benutzers gespeichert werden kann Seite 10 von 17

III High Security: für E-Banking sowie für besonders schützenswerte Daten Dieses Kapitel enthält zusätzliche Sicherheitsempfehlungen welche bei E-Banking Applikationen sowie für Web Applikationen mit besonders Schützenswerten persönlichen Daten (z.b. Patientendaten, Gerichtsakten etc.) zur Anwendung kommen. Nebst vielen, rein technischen Massnamen sind auf dieser Sicherheitsstufe auch organisatorische Massnahmen nötig, um einen entsprechende Sicherheit erfolgreich zu gewährleisten. Vorausgesetzt wird, dass die Empfehlungen für Basic Security und Standard Security bereits realisiert worden sind. 31. Verschlüsselungs-Tiefe und -Protokoll kontrollieren Kontrollieren Sie am Server-Seitigen Verschlüsselungs-Endpunkt die zwischen Web Browser und Web Server ausgehandelte Verschlüsselungstiefe. Leiten Sie alle Benutzer, bei welchen nur eine Verbindung mit einer geringen Verschlüsselungstiefe zustande kommt (kleiner 128 Bit, bzw. 112 Bit), auf eine Fehlerseite um. Kontrollieren Sie auch am Verschlüsselungs-Endpunkt die zwischen Web Browser und Web Server ausgehandelte Version des SSL Protokolls. Leiten Sie alle Benutzer, bei welchen nur eine Verbindung mit dem veralteten SSL Protokoll der Version 2 zustande kommt, auf eine Fehlerseite um. 32. Immer vollständige Zertifikats-Kette des SSL Server-Zertifikats übertragen Da bei vielen Web Browsern korrekterweise nur die Zertifikate der Root-CA (wie z.b. VeriSign) - jedoch nicht deren Zwischenzertifikate lokal gespeichert werden - muss der HTTPS Server so konfiguriert sein, dass beim ersten Verbindungsaufbau, bei der sog. Handshake-Phase, nebst den eigentlichen Server-Zertifikat auch die Zwischenzertifikate der Root-CA mit an den Web Browser gesendet werden. Geschieht dies nicht, so können viele Web Browser Produkte das Server-Zertifikat nicht überprüfen und geben eine Warnungs-Meldung an den Endbenutzer aus, welche fälschlicherweise suggeriert, dass die Verbindung nicht sicher ist. Die Endbenutzer gewöhnen sich damit an diese Warnungsmeldung und reagieren später falsch, wenn z.b. eine echte "Man in the Middle" Attacke auftritt bzw. eine ähnliche Warnungsmeldung (aus anderen Gründen) zurecht vom Web Browser angezeigt wird. Aktuell sind noch immer ca. 30% aller HTTPS Web Server diesbezüglich falsch konfiguriert. Mit dem auf unserer Web Page integrierten Web Server SSL Check im linken Navigationsbalken können Sie selbst überprüfen, ob Ihr HTTPS Server diesen Mangel enthält. Alternativ können sie z.b. mit einem aktuellen Mozilla Browser die entsprechende Fehlermeldung selbst verifizieren. Beim Microsoft Internet Explorer sind die Zwischenzertifikate jedoch bereits (fälschlicherweise) auf dem lokalen PC abgelegt. Aus diesem Grund wird darum keine Fehlermeldung ausgegeben. Beim Klicken auf das Schloss-Symbol -> Zertifizierungspfad wird dieser Pfad bei fehlenden Zwischenzertifikaten automatisch den lokal gespeicherten Zwischenzertifikaten ergänzt, so dass leider nicht festgestellt werden kann, welches Zertifikat nun vom Web Server stammt und welches lokal ergänzt wurde. 33. SSL Client-Zertifikate verwenden Sichern Sie die verschlüsselte Verbindung zusätzlich mit einem Client-Zertifikat. Nur dadurch können Sie Ihre Endbenutzer vor einer relativ leicht zu realisierenden "Man in the Middle" Attacke schützen. Seite 11 von 17

Ihre Endbenutzer sind so auch vor gefälschten E-Mails sicher, welche diese dazu verleiten, sich bei einer vorgetäuschten Web Site anzumelden. Es ist technisch nicht möglich durch einen vorgetäuschten HTTPS Web Server ein Client-Zertifikat zu kopieren oder weiterzugeben. Halten Sie das Client-Zertifikat auf dem Endbenutzer-PC am besten in einer eigenen Hardware mit integriertem Crypto-Prozessor (z.b. spezieller USB-Token oder Smartcard) - damit dieses nicht von der Festplatte gestohlen werden kann. 34. SSL Server-Zertifikat in spezieller Hardware speichern Halten Sie das Server-Zertifikat nie auf der Harddisk des Servers sondern immer in einer speziellen Hardware mit einem integrierten, leistungsfähigen Crypto- Prozessor (sog. HSM Modul). Die Hardware sollte zudem so beschaffen sein, dass in dieser das Zertifikat bzw. dessen private Key wohl gespeichert, jedoch niemals zurückgelesen werden kann. Der integriere Crypto-Prozessor dient einem ähnlichen Zweck: dadurch muss das Zertifikat nie in den Arbeitsspeicher des Servers geladen werden sondern bleibt unter allen Umständen innerhalb der speziellen Hardware. Dies verhindert, dass durch Kopieren unbemerkt ein Duplikat des Server-Zertifikats bzw. dessen Private-Key erzeugt werden kann. Ein solches Duplikat ist ideal dazu geeignet, eine perfekte "Man in the Middle" Attacke durchzuführen, ohne dass irgendeine Warnung im Browser-Fenster des Endbenutzers erscheint. 35. "Trusted" SSL Library verwenden Damit sichergestellt ist, dass die verwendete SSL-Library auch keine (gewollt) eingebaute Backdoors oder "geheime Schwachpunkte" enthält, sollten Sie nur OpenSource Libraries oder "Clean Room Implementationen" verwenden. Wie z.b. OpenSSL oder das kommerzielle Produkt IAIK-iSaSiLk der TUG Graz. Dabei sollten Sie Produkte vorziehen, deren Source-Code Sie zumindest einsehen können. 36. Starke Authentisierung verwenden Verwenden Sie zur Authentisierung eines Benutzers mindesten (zusätzlich) ein komplexes Sicherheitselement, welches nicht bereits im PC selbst gespeichert ist. Z.B. der vorhergehend erwähnte USB-Token. Auch TAN-Nummern/Zugangs- Nummernliste oder SecureID Cards können diesen Zweck erfüllen. Biometrische Verfahren sind im Prinzip auch gut geeignet. Zurzeit lassen sich diese (alle) jedoch noch sehr einfach austricksen und genügen darum den Sicherheitsanforderungen noch nicht. 37. URL Whitelist-Filter implementieren Unterdrücken Sie mit einem speziellen Filter im Reverse Proxy oder im Applikations-Server sämtliche URL-Aufrufe (URL Request Paths), welche nicht zu Ihrer Web Site gehören. Da nie ganz klar ist, welche URL s von der "eingebauten Intelligenz" eines Web- bzw. Applikations-Servers beantwortet werden, ist die Realisierung eines URL Whitelist-Filters ein muss. Der zulässige URL Request Path einer Web Applikation kann durchaus auch Wildcards ("*") enthalten. Alternativ unterstützen sog. Web Application Firewalls, welche das HTTP Protokoll inkl. sämtlicher zulässiger CGI- und Form-Parametern kontollieren u.a. auch die Realisierung von URL Whitelist-Filtern. 38. Keine Hyperlinks auf fremde Web-Seiten integrieren Setzen Sie in der Web Applikation keine Hyperlinks auf andere Web Sites. Auch nicht auf eigene Web Sites, wenn diese wiederum Hyperlinks auf fremde Web Sites enthalten. Seite 12 von 17

Sobald beim Endbenutzer die Situation auftritt, dass weitere Browser Fenster zu anderen Web Applikationen bzw. Web Sites offen sind, kann ein "bösartig" programmierter Web Server speziellen Code an den Web Browser übermitteln, welcher durch Client-Side Cross-Scripting Mechanismen z.b. die Session-ID Ihrer Web Applikation ausliest oder die Web Applikation ohne Zutun des Endbenutzers "fernbedient". Falls es unumgänglich ist, Daten von fremden Anbietern darzustellen, so sollten diese Daten mittels Ihrer Web-Applikation zuerst Server-Seitig geladen werden, wobei auch eine vollständige Prüfung gegenüber Cross-Scripting Code erfolgen muss. Erst danach erfolgt die Ausgabe dieser fremden Daten im Kontext Ihrer eigenen Web Applikation. 39. Session-Timeout kurz halten Halten Sie den Session-Timeout, d.h. die Inaktivitäts-Zeitdauer bei deren Überschreitung der Endbenutzer automatisch abgemeldet wird, kurz. Empfohlen sind Zeiten im Bereich von fünf bis zehn Minuten. Durch eine geschickte Programmierung Ihrer Web Applikation können sie zudem erreichen, dass ein automatisch abgemeldeter Benutzer nach einer erneuten Authentisierung sich wieder auf demselben Menüpunkt befindet, wo er letztmals - vor der automatische erzwungenen Abmeldung - war. Dies reduziert die Komforteinbusse des Endbenutzers durch den kurzen Session-Timeout ganz erheblich. 40. Keine endlosen Surf-Sessions erlauben Setzen Sie eine maximale Zeitdauer der Session - unabhängig vom inaktivitäts Session-Timeout. D.h. wie lange ein Endbenutzer sich maximal innerhalb der Web Applikation aufhalten kann, ohne sich neu zu Authentisieren. Empfohlen sind Zeiten um 2 bis 4 Stunden. Dies verhindert z.b., dass "Man in the Middle" Attacken und Trojanische Programme Session-ID s sammeln und durch automatisierte, periodische Requests die gesammelten Sessions "warm halten" und weiterleiten können. 41. Mehrfaches Login des gleichen Benutzers ausschliessen Dieser Fall sollte "theoretisch" eigentlich gar nicht vorkommen, da eine stake Authentisierung verwendet wird. Allenfalls hat sich der Endbenutzer versehentlich zweimal angemeldet - oder seine Internet-Verbindung wurde unterbrochen. Vielleicht wurde aber auch TAN-Nummern oder die Zugangs-Nummernliste inkl. der zusätzlichen Sicherheitselemente unbemerkt kopiert. Löschen Sie in jedem Fall im Applikations-Server die alte Session desselben Benutzers. Geben Sie zudem bei der neuen, doppelten Authentisierung dem Benutzer eine Warnungs-Meldung aus, dass eine bereits bestehende, aktive Session terminiert wurde. 42. Initial-Authentisierung nicht über ungesicherte Kanäle übertragen Übertragen Sie die Sicherheitselemente zum Zugriff auf die Applikation nie über ungesicherte Kanäle (wie z.b. E-Mail) an die Benutzer. Auch nicht in "dringenden Fällen" und auch nicht an eigene Support-Personen vor Ort beim Kunden. 43. Gesperrte Accounts nur nach sorgfältiger Authentisierung wieder entsperren Instruieren Sie Ihr Support-Personal dahingehend, dass gesperrte Benutzer- Accounts nur nach sorgfältiger, erneuter, nicht Computer-gestützter Authentisierung entsperrt werden. Kann keine vollständige Authentisierung durchgeführt werden (z.b. am Telefon), so sollte "höchstens" die Entsperrung unter Beibehaltung des alten Passworts vorgenommen werden - ohne dieses zu erwähnen. Noch besser ist, wenn Sie die gleichen Vorsichtsmassnahmen (wieder) anwenden, wie wenn der Benutzer zum ersten Mal in Ihrem System erfasst würde. Seite 13 von 17

Alternativ zu einer Entsperrung können auch neu erzeugte Sicherheitselemente an den Endbenutzer (erneut wieder) übertragen werden (neues Passwort etc.). Analog einer Initial-Authentisierung - wiederum über einen gesicherten Kanal. 44. Kryptologische Zufallszahlen-Generatoren verwenden Nebst der sauberen Implementation und der hohen Verschlüsselungstiefe hängt die Qualität einer sicheren Verbindung direkt mit den dazu nötigen Zufallszahlen- Generatoren sowohl auf Client- wie auch auf Server-Seite ab. Ein möglicher Angriffspunkt kann z.b. sein, dass auf Client-Seite der SSL-Library bzw. dem Web Browser ein Zufallszahlen-Generator "untergeschoben" wird, welcher vorhersagbare Zahlen liefert. In einem solchen Fall wird auch eine 128-Bit Verschlüsselungstiefe nicht davor schützen, dass der Datentransfer abgehört werden kann. Während Sie auf Client-Seite in der Regel wenig Einfluss auf die Qualität des Zufallszahlen-Generators haben, so sollten Sie dennoch auf Server-Seite qualitativ hochwertige Zufallszahlen-Generatoren verwenden, um den Session-Context bzw. die Session-Id zu erzeugen. 45. Limiten setzen und Risk-Management implementieren Setzen Sie innerhalb der Web Applikation immer Limiten, bei deren Überschreitung eine manuelle Kontrolle nötig ist. Dies ist eine mächtige Massnahme im grösseren "Ereignissen" vorzubeugen. Bei einem E-Commerce Shop welcher nur Blumen verkauft, welche mittels Kreditkarte bezahlt werden, könnte die Limite für einen maximalen Einkauf z.b. 500 Euro betragen - oder z.b. 2000 Euro pro Kunde und Tag. Bei E-Banking Applikationen sollten diese Limiten eher aus der Transaktions- History des Kunden oder Begünstigten selbst berechnet werden: so könnten z.b. ungewöhnlich hohe Zahlungen aus oder nach fremden Ländern ein Grund für eine vertiefte Kontrolle sein. Überlegen sie auch selbst, welche weiteren Limiten für Ihre Web Applikation Sinn machen. 46. GMT als applikations-interne Zeitbasis verwenden Damit die Nachvollziehbarkeit der aufgezeichneten Daten auch während des Übergangs Sommerzeit/Winterzeit gewährleistet ist, sollten sie applikations-intern alle Zeiten in GMT führen, und den Endbenutzern die Zeit jeweils umgerechnet in deren lokale Zeit darstellen (lokale Zeitzone im Benutzerprofil speichern). Dies verhindert bei Software-Komponenten auch ungewollte Rückwärts- Zeitsprünge, bei der Rückstellung der Zeit um eine Stunde und hat den zusätzlichen Vorteil, dass bei "internationalen Kunden" Daten mit Zeitangaben in der gewohnten Zeitzone des Kunden dargestellt werden können. Der tiefere Sinn bezüglich Security besteht jedoch darin, dass die zeitliche Nachvollziehbarkeit der Log-Daten und Transaktionen auch bei der Umstellung Sommerzeit/Winterzeit nicht durcheinander gerät. 47. Anonyme Benutzer von authentisierten Benutzern trennen Einen besseren Schutz vor anonymen Hacking-Versuchen erreichen Sie dadurch, dass dem eigentlichen Applikationsserver eine Reverse Proxy Server vorgeschaltet wird, welcher den Endbenutzer Authentisiert und erst bei einer erfolgreichen Authentisierung des Endbenutzers den Datentransfer zum eigentlichen Applikationsserver weiterleitet. 48. Schutzmassnahmen auf Kundeseite fördern Halten Sie Ihre Endbenutzer dazu an, einen Firewall sowie einen Virenscanner einzusetzen. Publizieren Sie den Fingerprint Ihres SSL-Server Zertifikats auch auf anderen Medien als dem Internet (z.b. auf Papier in Mailings). Sensibilisieren Sie Ihre Kunden dahingehend, dass diese Ihren Help-Desk per Telefon anrufen, wenn Seite 14 von 17

neu unübliche Fehlermeldungen im Web Browser ausgegeben werden. 49. Benutzeranfragen und Störungsmeldungen richtig behandeln Schulen Sie Ihr Supportpersonal dahingehend, dass diese mit den Symptomen der wahrscheinlichsten Angriffsversuchen auf Ihre Endbenutzer vertraut sind, und in einem solchen Fall einen Angriffsversuch erkennen und direkt Ihre Interne IT Security-Abteilung kontaktieren. 50. Angriffsversuche periodisch Auswerten Protokollieren Sie "mutwillige" Angriffe auf das Rollenkonzept der Web Applikation (z.b. mittels manipulierten HTML Form-Parametern) mit einer besonderen Kennzeichnung und werten Sie solche Angriffsversuche regelmässig aus. Dadurch können Sie gezielt die wenigen Schwarzen Schafe unter Ihren Endbenutzern eliminieren. 51. Shutdown-Kriterien und Notfall-Konzepte vorbereiten Legen Sie im vornherein definierte Kriterien fest, unter welchen Umständen Sie die Web Applikation temporär vom Netz nehmen, wie Sie am effizientesten auf Angriffsversuche (auch gegen Ihre Kunden) reagieren, und wie Sie in einem solchen Fall mit Ihren Kunden kommunizieren. Seite 15 von 17

IV Weitere Empfehlungen 52. Alle Team-Mitglieder sensibilisieren Sensibilisieren Sie alle Team-Mitglieder bezüglich Security. Es nützt nicht viel, wenn Ihr Kollege über keine Kenntnisse der notwendigen Vorkehrungen verfügt. Teile Sie gemeinsam das Wissen in diesem Bereich und kommunizieren Sie auch, welche Konsequenzen das Unterlassen von Sicherheitsmassnamen für die Beurteilung Ihres Teams und Ihrer Firma haben könnte. 53. Qualitätssicherung mit einbeziehen Oft werden von der klassischen Qualitätssicherungs-Abteilung die Security- Aspekte zuwenig geprüft. Verlangen Sie auch in diesem Bereich entsprechende Tests. Legen Sie besonderen Wert darauf, dass Angriffsversuche auf das Rollenkonzept der Applikation mittels gefälschter HTTP-Parametern sowie korrekte Überprüfung aller HTML Formular Input-Parameter ausführlich getestet wird. 54. Umsetzung von Security-Massnahmen bei Aufwandschätzungen mit berücksichtigen Schätzen Sie den Projekt-Aufwand so, dass alle Aufwände zum Erreichen der notwendigen Sicherheitsmassnamen bereits inbegriffen sind. Falls Sie bereits wissen, dass ein Security-Audit Bestandteil der Abnahme ist, so sollten Sie auch eine Reserve für unvorhergesehene Fehlerbehebungen mit einplanen. 55. Auf ausgewogene Sicherheit achten Falls die Umsetzung einer einzelnen Massnahme zu hohen Kosten führt, so sollten Sie zuerst überlegen, ob die Realisierung - um Vergleich zu anderen Massnahmen bzw. Bedrohungen - wirklich berechtigt ist. Oder als Metapher formuliert: wenn Sie Ihr Haus vor Überschwemmungen schützen möchten - so nützt eine 2 Meter hohe Mauer nur auf der Hinterseite nichts - viel besser währe, wenn sie nur eine 50 Zentimeter hohe Mauer bauen würden - dafür rund um das Haus. 56. Hilfe anfordern, Übersicht behalten und Risiken delegieren Fordern Sie interne oder externe Hilfe an, wenn Sie bei der Beurteilung oder bei der Umsetzung von Sicherheitsmassnamen unsicher sind. Es ist nicht so einfach, eine reale Bedrohung von einer rein theoretischen, unwahrscheinlichen Bedrohung zu unterscheiden. Informieren Sie sich im Web über tatsächlich, bereits realisierte Vorkommnisse und legen Sie den Schwerpunkt Ihrer Sicherheits-Massnahmen auf die Abwehr dieser realen Angriffe. Falls Sie zur Überzeugung gelangt sind, dass in Ihrer Web Applikation ein grösseres Sicherheitsleck bereits besteht - bei welchem zur Behebung ein zusätzlicher Aufwand nötig ist - so sollten Sie Ihren Vorgesetzen umgehend mit einer schriftlichen Beschreibung informieren und gleichzeitig die nötigen Mittel und Ressourcen anfordern, um dieses Risiko zu eliminieren. Werden die Ressourcen oder Mittel nicht freigegeben, so müssen Sie das Risiko nicht selbst tragen. Dies entspricht auch dem üblichen Vorgehen bei allen Qualitätssicherungs- Massnahmen. Es ist Schlussendlich ein Entscheid des Managements, welche Risiken tragbar sind. Voraussetzung ist jedoch, dass die entsprechenden Entscheidungsträger genügend gut informiert wurden. Seite 16 von 17

V Hyperlinks Link-Sammlung zum Thema Web Application Security in Englischer Sprache: - SecurityTechNet.com Hyperlinks zum Thema IT-Security in Deutscher Sprache: - Deutsches Bundesamt für Sicherheit in der Informationstechnik (BSI) - Security Portal des heise Verlags Hyperlinks zum Thema HTTPS/SSL in Deutscher Sprache: - SSL-Studie (BSI, PDF-Datei) - Angriffe in der Praxis: Verschlüsselungs-Algorithmen (heise Security) VI Feedback Ihre Kritik, Kommentare, Fragen oder Ergänzungen sind willkommen und werden von uns in der Regel innerhalb von drei Arbeitstagen beantwortet. Gegebenfalls erweitern oder ergänzen wir dabei auch die hier vorliegenden Web Application Security Tips. Senden Sie bitte Ihre Nachricht an security@d-fischer.com. Beachten Sie bitte, dass Ihre Nachricht gegebenenfalls anonymisiert publiziert wird (ohne Ihren vollen Namen und ohne Ihre E-Mail Adresse). Wir sichern Ihnen verbindlich zu, Ihre Nachricht rein fachlich zu behandeln, Ihre Namen und Ihre E-Mail Adresse nicht an Dritte weiterzureichen und Ihnen keinerlei Werbe-Mails zuzustellen. Aus urheberrechtlichen Gründen können wir Ihnen jedoch kein Copyright auf Ihre Nachricht gewähren. Seite 17 von 17