Upload
apets
View
756
Download
0
Embed Size (px)
DESCRIPTION
Der Vortrag beschreibt eine Technik, die den gesamten Zustand einer Anwendung serverseitig in einer Session verwaltet. Der konventionelle Transfer von Parametern per GET und POST wird durch die Technik vermieden - dies schließt die Namen von Controllern oder IDs von views ein. Durch Nutzung der Technik werden zwischen Browser und Server ausschließlich sog. FlowGroupID und FlowIDs transferiert. Diese IDs werden so generiert, dass sie einerseits zufällig und andererseits so lang sind, dass sie nicht vorhersehbar sind. Eine FlowGroupID determiniert eine Webseite, eine FlowID eine Instanz eines Controllers mitsamt seiner Aufrufparameter, die in einem FLOW konserviert wird. Das Konzept eines FLOWs ist ähnlich einem activation-record. Während jedoch ein activation-record bestimmt, wie eine Funktion/Methode aufgerufen wurde, definiert ein FLOW, wie ein Controller einer Web-Anwendung in der Zukunft aufgerufen werden darf. Die Technik stellt sicher, dass eine Web-Anwendung nur erlaubte Zustandsübergänge - erlaubte Links - ausführen kann. Denn jeder ausgeführte Controller definiert die Gesamtmenge aller im nächsten HTTP-request ausführbaren Controller mitsamt ihrer Parameter. Angriffs-Vektoren, die auf der Manipulation von GET und POST Parametern basieren, werden durch den Einsatz der vorgestellten Technik unwirksam. Zudem werden Angriffsvektoren eliminiert, die auf dem Aufruf von HTTP-requests basieren, die im aktuellen Zustand einer Anwendung nicht hätten aufgerufen werden dürfen bzw. dessen Aufruf der verantwortliche Anwendungsentwickler nicht vorhergesehen / abgefangen hat. Während der ersten öffentlichen Präsentation im Rahmen der PHP User Group Hamburg - http://www.meetup.com/phpughh/events/94999962/ - wurden folgende Anmerkungen [H] gemacht: H: Die Technik sei nicht RESTful. A: Korrekt in dem Sinne, dass die Technik HTTP bzw. die Interaktion eines Browsers mit einem Webserver in gewissem Sinne eben gerade stateful macht, also gerade nicht RESTful. H: Die Technik skaliere nicht. A: Skalierbarkeit ist ein sehr weit gefasster Begriff. In voller Allgemeinheit würde ich der Aussage zurzeit nicht zustimmen. H: Die Technik verhindere, dass man eine Web-Anwendung in zwei Fenstern ausführen kann. A: In der präsentierten Version ist dies korrekt. Die vorgestellte Technik ist jedoch diesbezüglich problemlos generalisierbar. H: Die Technik behindere die Nutzung der Browser-Funktionen VOR und ZURÜCK. A: Korrekt. Die vorgestellte Technik ist jedoch insbesondere bezüglich ZURÜCK generalisierbar. H: Die Technik generiere vergleichsweise große Sessions A: Korrekt. Das Einfrieren von zukünftigen Controller-Instanziierungen in FLOWs erfordert Platz. H: Apache Wicket - http://wicket.apache.org/ - habe gewisse Ähnlichkeiten. A: Vielen Dank für den Hinweis auf Wicket!
Citation preview
ALLES IN DIE SESSIONNIX IM BROWSER
Stefan Pantke
http://www.meetup.com/phpughh/Mittwoch, 13. Februar 13
∼ ∼ FRAGE I ∼ ∼
WARUM MUSS EINE ANWENDUNG GESCHÜTZT WERDEN?
Mittwoch, 13. Februar 13
AUS FORMALEN GRÜNDEN• Bundesdatenschutzgesetz [BDSG]
• Verbotsprinzip mit Erlaubnisvorbehalt
• Alle personenbeziehbaren Daten sind zu schützen
• Besondere Daten - Ethnische/Rassische Herkunft, politische Meinung, religiöse / philosophische Überzeugung, Gewerkschaftszugehörigkeit, Gesundheit und Sexualleben
• Besondere Daten sind besonders zu schützen
Mittwoch, 13. Februar 13
BDSG
Mittwoch, 13. Februar 13
∼ ∼ FRAGE II ∼ ∼
WOGEGEN MUSS EINE ANWENDUNG GESCHÜTZT WERDEN
Mittwoch, 13. Februar 13
NEULICH BEI D-LINK
Quelle: http://www.heise.de/security/meldung/Sicherheitsalarm-fuer-D-Link-Router-1796519.html
Mittwoch, 13. Februar 13
MEETUP.COM VERSCHICKT E-MAILMIT VERIFIKATIONS-LINKS,
DIE LOGIN DURCHFÜHREN
Mittwoch, 13. Februar 13
OWASP TOPTEN 2010• SQL injection
• Cross site scripting
• Broken authorization-/sessionmngmnt.
• Insecure direct object
• Cross site request forgery
• Security misconfiguration
• Insecure cryptographic storage
• Failure to restrict URL access
• Insufficent transport layer security
• Unvalidated redirects and forwards
Mittwoch, 13. Februar 13
ASSERTIONSEXCEPTIONS
ESCAPING VON QUERIES
INPUT VALIDATION
VERSCHLÜSSELUNG
ANTIQUITÄTEN [MAGIC QUOTES]
ORGANISATION DES FILESYSTEMS
PROTOKOLLIERUNG
Nicht heute
Mittwoch, 13. Februar 13
∼ ∼ SCHON ERLEBT ? ∼ ∼
WENN ANWENDER ZU SCHLAU ODER ZU UNGESCHICKT IST...
Mittwoch, 13. Februar 13
ANWENDER SPEICHERT BOOKMARK ANWENDER GIBT LINK WEITER
ANWENDER EDITIERT URL
• Falls Anwendung mangelhaft implementiert ist, dann
• sieht Anwender oder Dritter Daten, die er nicht sehen darf
• löst Anwender Funktion aus, die die falschen Datensätze manipuliert oder löscht
Mittwoch, 13. Februar 13
∼ ∼ ZEN MEDITATION ∼ ∼
ZIELLOSER ANWENDER KÖNNTE
ZIELGERICHTETER ANGREIFER SEIN
Mittwoch, 13. Februar 13
https://www.owasp.org/index.php/File:2010-T10-ArchitectureDiagram.png
Mittwoch, 13. Februar 13
OWASP TOPTEN 2010• SQL injection
• Cross site scripting
• Broken authorization-/sessionmngmnt.
• Insecure direct object
• Cross site request forgery
• Security misconfiguration
• Insecure cryptographic storage
• Failure to restrict URL access
• Insufficent transport layer security
• Unvalidated redirects and forwards
Mittwoch, 13. Februar 13
∼ ∼ NIX IST KOSTENLOS ∼ ∼
SICHERHEIT VS. BEQUEMLICHKEIT
Mittwoch, 13. Februar 13
∼ ∼ MEHR ALS 99% ∼ ∼
ALLE WEB-ANWENDUNGEN LAUFEN GLEICH AB
Mittwoch, 13. Februar 13
VORWÄRTS UND ZURÜCK
Kunde suchen
Kunde anzeigen
Vertrag hinzufügen
1
2
3
4
Mittwoch, 13. Februar 13
GESPIEGELT UND GEDREHT
Kunde suchen
Kunde anzeigen
Vertrag hinzufügen
1
2
3
4
Kunde suchen
Kunde anzeigen
Vertrag hinzufügen
1
2
3
4
Kunde suchen
Kunde anzeigen
Vertrag hinzufügen
1
2
3
4
Kunde suchen
Kunde anzeigen
Vertrag hinzufügen
1
2
3
4
Mittwoch, 13. Februar 13
1
1.1 1.2 1.3
1
1.1
1.1.21.1.1 1.1.3
1.1.21.1.1
AUSWÄHLEN UND WEITER
Mittwoch, 13. Februar 13
∼ ∼ STANDARD ∼ ∼
AUFGERUFENER PRÜFTDAS WIE DER AUSFÜHRUNG
Mittwoch, 13. Februar 13
∼ ∼ ERWEITERT ∼ ∼
AUFGERUFENER PRÜFTDAS WIE DER AUSFÜHRUNG
AUFRUFER DEFINIERT WANN WAS PASSIEREN DARF
Mittwoch, 13. Februar 13
OK! ABER WIE GEHT ES GENAU?
Mittwoch, 13. Februar 13
Flow
ArtikelID => 485
PersonID => 42
CArtikelFlow
Info => 'Bitte tragen...'
CArtikelFlow::CreateSub
FLOWFlow definiert Controller-Aufruf mit allen Parametern.
CFlow::createFlow()CFlow::addFlowParam()
Mittwoch, 13. Februar 13
Flow
parent:EArtikel => 485
owner:EPerson=> 42
CArtikelFlow
Info => 'Bitte tragen...'
CArtikelFlow::CreateSub
FLOW
Typehints erzeugen Entitäten bestimmten Typs.
CFlow::addFlowParam()
Mittwoch, 13. Februar 13
FlowGroup
1.1
1.2
1.3
1.4
FLOWGROUP
Definiert Menge von Flows, von denen eine ausgeführt werden kann. Links auf einer Webseite.
CFlow::createFlowGroup()
Mittwoch, 13. Februar 13
FlowGroup
1.1
1.2
1.3
1.4
FLOWGROUP
Ausführung eines Flows invalidiert alle Alternativen.
CFlow::executeFlow()CFlow::invalidateExcept()
Mittwoch, 13. Februar 13
FG 1
FG 1.2
FG 1.2.1
FLOWGROUP
FlowGroup kennt Vorgänger und Nachfolger.
Vorgänger ist ZURÜCK oder ABBRECHEN Link auf jeder Seite.
Mittwoch, 13. Februar 13
FG 1
FG 1.2
FG 1.2.1
FLOWGROUP
Terminierung von FlowGroup setzt Vorgänger fort.
CFlow::terminateFlowGroup()
Mittwoch, 13. Februar 13
∼ ∼ ISOLATION ∼ ∼
CONTROLLER SAGT NUR,ICH BIN FERTIG‘
Mittwoch, 13. Februar 13
FG 1
FG 1.2
PFG A
PFG A
PFG A
Permanent
TransientGLOBALES
Globale Links überdauern ihren Aufruf
CFlow::createPermanentFlow()
Mittwoch, 13. Februar 13
FG 1
FG 1.2
FG 1.2.1
EXCEPTION!
User nicht berechtigt? Es geht geordnet weiter...
CFlow::terminateFlowGroup()
Mittwoch, 13. Februar 13
FG 1
FG 1.2
FG 1
FG 1.2
FG 1.2.1
FG 1.2.1.5
FG 1.2.1.5.7
MULTISTEP
Mehrschrittige Prozesse durch mehrere FlowGroups
Mittwoch, 13. Februar 13
Session
http://myServer/doLogin
TransientPerm
anent
Mittwoch, 13. Februar 13
Session
http://myServer/
PFG A
PFG A
PFG A
TransientPerm
anent
Mittwoch, 13. Februar 13
Session
http://myServer/
PFG A
PFG A
PFG A
TransientPerm
anentFlowGroup
1.1
1.2
1.3
1.4
ABCDEFGHIJ:1234567890
ID der FlowGroupID des Flows
Mittwoch, 13. Februar 13
Session
IDs von FlowGroups
IDs von Flows
Controller/Parameter
Browser
ID der Session
IDs aktueller FLows
Hidden Parameter
GET-/POST-Parameter
IDS SIND NICHT VORHERSEHBAR
Mittwoch, 13. Februar 13
∼ ∼ VISION ∼ ∼
DEFINIERE, WAS WANN PASSIEREN DARF
IN EINER ZENTRALEN DSL
Mittwoch, 13. Februar 13
Flow
parent:EArtikel => 485
owner:EPerson=> 42
CArtikelFlow
Info => 'Bitte tragen...'
CArtikelFlow::CreateSub
Flow
parent:EArtikel => 485
owner:EPerson=> 42
CArtikelFlow
Info => 'Bitte tragen...'
CArtikelFlow::CreateSub
Flow
parent:EArtikel => 485
owner:EPerson=> 42
CArtikelFlow
Info => 'Bitte tragen...'
CArtikelFlow::CreateSub
Flow
parent:EArtikel => 485
owner:EPerson=> 42
CArtikelFlow
Info => 'Bitte tragen...'
CArtikelFlow::CreateSub
Flow
parent:EArtikel => 485
owner:EPerson=> 42
CArtikelFlow
Info => 'Bitte tragen...'
CArtikelFlow::CreateSub
Mittwoch, 13. Februar 13
ZUM THEMA SICHERHEIT...
Mittwoch, 13. Februar 13
https://www.bsi.bund.de/cae/servlet/contentblob/476464/publicationFile/30632/WebSec_pdf
108Seiten
Mittwoch, 13. Februar 13
http://shiflett.org/php-security.pdf
37Seiten
Mittwoch, 13. Februar 13
FRAGEN / ANREGUNGEN / KRITIK
Mittwoch, 13. Februar 13