1. FLOW3: SECURITY MIT AOP
FLOW3 Experience 2012
31.03.2012
F3X - Andreas Förthner media.netlogix.de
1
2. ANDREAS FÖRTHNER
Leiter Web-Entwicklung @t3andi
netlogix Media
TYPO3 Phoenix / FLOW3 Core
Team seit 2007
Andreas_Foerthne
TYPO3 Security Team r
Member und Kopf hinter dem
FLOW3 Security Framework andreas.foerthner@netlogi
x.de
31.03.2012
F3X - Andreas Förthner media.netlogix.de
2
3. AGENDA
Warum ein Security
Framework?
Authentifizierung
Autorisierung mit AOP
cont
ent
Content Security
... und der ganze Rest
31.03.2012
F3X - Andreas Förthner media.netlogix.de
3
4. WER? WAS? WIE? UND WARUM DER
GANZE AUFWAND?
Das Security Framework
31.03.2012
F3X - Andreas Förthner media.netlogix.de
4
5. DAS SECURITY FRAMEWORK
Start der Planungen bereits Ende 2007
Ziel: Unterstützung bei der Entwicklung
sicherer Anwendungen
Kritische Routinen zentral kapseln
Infrastruktur für oft benötigte Use-Cases
Nicht Teil des Security-Packages:
Validierung und Output-Filterung
31.03.2012
F3X - Andreas Förthner media.netlogix.de
5
6. UND WER WARST DU
NOCH GLEICH?
Authentifizierung
31.03.2012
F3X - Andreas Förthner media.netlogix.de
6
7. AUTHENTIFIZIERUNG
Es ist möglich beliebige Mechanismen zur
Authentifizierung zu verwenden
31.03.2012
F3X - Andreas Förthner media.netlogix.de
7
8. AUTHENTIFIZIERUNG
Es ist möglich beliebige Mechanismen zur
Authentifizierung zu verwenden
Bisher in FLOW3 implementiert:
Benutzername/Passwort
HTTP-Auth
typo3.org SSO
31.03.2012
F3X - Andreas Förthner media.netlogix.de
7
10. AUTHENTIFIZIERUNG
Es ist möglich verschiedene Mechanismen
gleichzeitig zu verwenden!
More-Factor-Authentication
Verschiedene Mechanismen für
verschiedene Bereiche
Verschiedene Mechanismen je nach
Herkunft des Users (z.B. internes vs.
externes Netzwerk)
31.03.2012
F3X - Andreas Förthner media.netlogix.de
9
13. AUTHENTIFIZIERUNG
Jeder Provider authentifiziert einen eigenen
Account
31.03.2012
F3X - Andreas Förthner media.netlogix.de
11
14. AUTHENTIFIZIERUNG
Jeder Provider authentifiziert einen eigenen
Account
Jeder Account hält Rollen, die damit „aktiv“
werden
31.03.2012
F3X - Andreas Förthner media.netlogix.de
11
15. AUTHENTIFIZIERUNG
Jeder Provider authentifiziert einen eigenen
Account
Jeder Account hält Rollen, die damit „aktiv“
werden
Account-Model erweitern für dynamische
Rollen-Aktivierung
31.03.2012
F3X - Andreas Förthner media.netlogix.de
11
16. HEY! DU KOMMST
HIER NET REIN!
Autorisierung
31.03.2012
F3X - Andreas Förthner media.netlogix.de
12
18. AUTORISIERUNG
Was bedeutet das?
31.03.2012
F3X - Andreas Förthner media.netlogix.de
13
19. AUTORISIERUNG
Was bedeutet das?
Aktionen verbieten
31.03.2012
F3X - Andreas Förthner media.netlogix.de
13
20. AUTORISIERUNG
Was bedeutet das?
Aktionen verbieten
... also Methoden nicht ausführen
31.03.2012
F3X - Andreas Förthner media.netlogix.de
13
21. AUTORISIERUNG
Was bedeutet das?
Aktionen verbieten
... also Methoden nicht ausführen
Problem: Eine Anwendung hat überall
Methoden...
31.03.2012
F3X - Andreas Förthner media.netlogix.de
13
22. AUTORISIERUNG
Was bedeutet das?
Aktionen verbieten
... also Methoden nicht ausführen
Problem: Eine Anwendung hat überall
Methoden...
Wir wollen das aber trotzdem zentral lösen!
31.03.2012
F3X - Andreas Förthner media.netlogix.de
13
23. AUTORISIERUNG
Mit AOP kann Code dynamisch in die
Anwendung „eingewoben“ werden
z.B. Security-Checks for dem Ausführen
einer Methode
Der Check selbst wird nur einmal zentral in
einem sog. Advice implementiert!
Pointcut-Expressions definieren wo
„eingewoben“ wird (Pointcuts)
31.03.2012
F3X - Andreas Förthner media.netlogix.de
14
24. AOP
namespace ExamplesForumDomainModel;
class Forum {
/**
* Delete a forum post
*
* @param ExamplesForumDomainModelPost $post
* @return void
*/
public function deletePost(Post $post) {
$this->posts->remove($post);
}
}
31.03.2012
F3X - Andreas Förthner media.netlogix.de
15
25. AOP
/**
* @FLOW3Aspect
*/
class LoggingAspect {
/**
* Log a message if a post is deleted
*
* @param TYPO3FLOW3AOPJoinPointInterface $joinPoint
* @FLOW3Before("method(ExamplesForumDomainModelForum-
>deletePost())")
* @return void
*/
public function logDeletePost(TYPO3FLOW3AOPJoinPointInterface $joinPoint) {
$post = $joinPoint->getMethodArgument('post');
31.03.2012
F3X - Andreas Förthner media.netlogix.de
16
26. AUTORISIERUNG
Security-Policy besteht aus:
Securit-Resources: Pointcut-Expressions
Rollen
Access Control Lists (ACLs)
31.03.2012
F3X - Andreas Förthner media.netlogix.de
17
35. CONTENT SECURITY
Sicherheit für gespeicherte Daten
31.03.2012
F3X - Andreas Förthner media.netlogix.de
24
36. CONTENT SECURITY
Sicherheit für gespeicherte Daten
... d.h. für peristierte Objekte
31.03.2012
F3X - Andreas Förthner media.netlogix.de
24
37. CONTENT SECURITY
Sicherheit für gespeicherte Daten
... d.h. für peristierte Objekte
Objekte, die man nicht lesen darf, werden
nicht zurückgegeben
31.03.2012
F3X - Andreas Förthner media.netlogix.de
24
38. CONTENT SECURITY
Sicherheit für gespeicherte Daten
... d.h. für peristierte Objekte
Objekte, die man nicht lesen darf, werden
nicht zurückgegeben
Wir schreiben Queries per AOP
transparent um
31.03.2012
F3X - Andreas Förthner media.netlogix.de
24
39. CONTENT SECURITY
Sicherheit für gespeicherte Daten
... d.h. für peristierte Objekte
Objekte, die man nicht lesen darf, werden
nicht zurückgegeben
Wir schreiben Queries per AOP
transparent um
Nebeneffekt: Performance-Gewinn!
31.03.2012
F3X - Andreas Förthner media.netlogix.de
24
41. CONTENT SECURITY
DEMNÄCHST IN IHREM FLOW3:
31.03.2012
F3X - Andreas Förthner media.netlogix.de
26
42. CONTENT SECURITY
DEMNÄCHST IN IHREM FLOW3:
CONTENT SECURITY FÜR DQL
31.03.2012
F3X - Andreas Förthner media.netlogix.de
26
43. SO VIEL SPASS -
FÜR SO WENIG GELD!
Was es sonst noch zu sehen gibt...
31.03.2012
F3X - Andreas Förthner media.netlogix.de
27
44. WAS ES SONST NOCH ZU SEHEN GIBT...
31.03.2012
F3X - Andreas Förthner media.netlogix.de
28
45. WAS ES SONST NOCH ZU SEHEN GIBT...
Virus!
31.03.2012
F3X - Andreas Förthner media.netlogix.de
28
46. WAS ES SONST NOCH ZU SEHEN GIBT...
31.03.2012
F3X - Andreas Förthner media.netlogix.de
29
47. WAS ES SONST NOCH ZU SEHEN GIBT...
Was steckt dahinter?
31.03.2012
F3X - Andreas Förthner media.netlogix.de
29
48. WAS ES SONST NOCH ZU SEHEN GIBT...
Was steckt dahinter?
Cross Site Request Forgery (CSRF)
31.03.2012
F3X - Andreas Förthner media.netlogix.de
29
49. WAS ES SONST NOCH ZU SEHEN GIBT...
Was steckt dahinter?
Cross Site Request Forgery (CSRF)
Die Lösung
31.03.2012
F3X - Andreas Förthner media.netlogix.de
29
50. WAS ES SONST NOCH ZU SEHEN GIBT...
Was steckt dahinter?
Cross Site Request Forgery (CSRF)
Die Lösung
CSRF-Token für geschützte (schreibende)
Actions
31.03.2012
F3X - Andreas Förthner media.netlogix.de
29
51. WAS ES SONST NOCH ZU SEHEN GIBT...
Was steckt dahinter?
Cross Site Request Forgery (CSRF)
Die Lösung
CSRF-Token für geschützte (schreibende)
Actions
Die geschieht komplett transparent per AOP
31.03.2012
F3X - Andreas Förthner media.netlogix.de
29
52. WAS ES SONST NOCH ZU SEHEN GIBT...
Was steckt dahinter?
Cross Site Request Forgery (CSRF)
Die Lösung
CSRF-Token für geschützte (schreibende)
Actions
Die geschieht komplett transparent per AOP
(Nur das weglassen muss momentan explizit
31.03.2012
F3X - Andreas Förthner media.netlogix.de
29
53. WAS ES SONST NOCH ZU SEHEN GIBT...
31.03.2012
F3X - Andreas Förthner media.netlogix.de
30
54. WAS ES SONST NOCH ZU SEHEN GIBT...
Zentrale Utility-Klassen für
31.03.2012
F3X - Andreas Förthner media.netlogix.de
30
55. WAS ES SONST NOCH ZU SEHEN GIBT...
Zentrale Utility-Klassen für
Hashing (Hashes, HMAC, etc.)
31.03.2012
F3X - Andreas Förthner media.netlogix.de
30
56. WAS ES SONST NOCH ZU SEHEN GIBT...
Zentrale Utility-Klassen für
Hashing (Hashes, HMAC, etc.)
Encryption (RSA wallet service ...)
31.03.2012
F3X - Andreas Förthner media.netlogix.de
30
57. WAS ES SONST NOCH ZU SEHEN GIBT...
Zentrale Utility-Klassen für
Hashing (Hashes, HMAC, etc.)
Encryption (RSA wallet service ...)
Secure Downloads
31.03.2012
F3X - Andreas Förthner media.netlogix.de
30
58. WAS ES SONST NOCH ZU SEHEN GIBT...
Zentrale Utility-Klassen für
Hashing (Hashes, HMAC, etc.)
Encryption (RSA wallet service ...)
Secure Downloads
Functional Tests für Security!
31.03.2012
F3X - Andreas Förthner media.netlogix.de
30
59. SO LONG AND THANKS FOR THE FISH...
Vielen Dank!
Gibt es Fragen?
31.03.2012
F3X - Andreas Förthner media.netlogix.de
31