Your SlideShare is downloading. ×
FLOW3: Security mit AOP
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

FLOW3: Security mit AOP

1,795
views

Published on

Published in: Technology

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,795
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript

    • 1. FLOW3: SECURITY MIT AOPFLOW3 Experience 201231.03.2012F3X - 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.de31.03.2012F3X - Andreas Förthner media.netlogix.de 2
    • 3. AGENDA Warum ein Security Framework? Authentifizierung Autorisierung mit AOP cont ent Content Security ... und der ganze Rest31.03.2012F3X - Andreas Förthner media.netlogix.de 3
    • 4. WER? WAS? WIE? UND WARUM DERGANZE AUFWAND?Das Security Framework31.03.2012F3X - 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-Filterung31.03.2012F3X - Andreas Förthner media.netlogix.de 5
    • 6. UND WER WARST DUNOCH GLEICH?Authentifizierung31.03.2012F3X - Andreas Förthner media.netlogix.de 6
    • 7. AUTHENTIFIZIERUNG Es ist möglich beliebige Mechanismen zur Authentifizierung zu verwenden31.03.2012F3X - 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 SSO31.03.2012F3X - Andreas Förthner media.netlogix.de 7
    • 9. AUTHENTIFIZIERUNG TYPO3: FLOW3: security: authentication: providers: DefaultProvider: providerClass: PersistedUsernamePasswordProvider entryPoint: WebRedirect: uri: login.html31.03.2012F3X - Andreas Förthner media.netlogix.de 8
    • 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.2012F3X - Andreas Förthner media.netlogix.de 9
    • 11. AUTHENTIFIZIERUNG DefaultProvider: providerClass: PersistedUsernamePasswordProvider requestPatterns: uri: /userarea AdministrationProvider: providerClass: PersistedUsernamePasswordProvider requestPatterns: controllerObjectName: MyPackage/Controller/Admin.*31.03.2012F3X - Andreas Förthner media.netlogix.de 10
    • 12. AUTHENTIFIZIERUNG31.03.2012F3X - Andreas Förthner media.netlogix.de 11
    • 13. AUTHENTIFIZIERUNG Jeder Provider authentifiziert einen eigenen Account31.03.2012F3X - Andreas Förthner media.netlogix.de 11
    • 14. AUTHENTIFIZIERUNG Jeder Provider authentifiziert einen eigenen Account Jeder Account hält Rollen, die damit „aktiv“ werden31.03.2012F3X - 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-Aktivierung31.03.2012F3X - Andreas Förthner media.netlogix.de 11
    • 16. HEY! DU KOMMSTHIER NET REIN!Autorisierung31.03.2012F3X - Andreas Förthner media.netlogix.de 12
    • 17. AUTORISIERUNG31.03.2012F3X - Andreas Förthner media.netlogix.de 13
    • 18. AUTORISIERUNG Was bedeutet das?31.03.2012F3X - Andreas Förthner media.netlogix.de 13
    • 19. AUTORISIERUNG Was bedeutet das? Aktionen verbieten31.03.2012F3X - Andreas Förthner media.netlogix.de 13
    • 20. AUTORISIERUNG Was bedeutet das? Aktionen verbieten ... also Methoden nicht ausführen31.03.2012F3X - 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.2012F3X - 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.2012F3X - 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.2012F3X - 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.2012F3X - 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.2012F3X - Andreas Förthner media.netlogix.de 16
    • 26. AUTORISIERUNG Security-Policy besteht aus: Securit-Resources: Pointcut-Expressions Rollen Access Control Lists (ACLs)31.03.2012F3X - Andreas Förthner media.netlogix.de 17
    • 27. POLICY resources: methods: RestrictedController_adminAction: "method(MyPackageRestrictedController->adminAction())" RestrictedController_customerAction: "method(MyPackageRestrictedController ->customerAction($customer.administrator == current.securityContext.account) )"31.03.2012F3X - Andreas Förthner media.netlogix.de 18
    • 28. POLICY roles: Customer: [] Administrator: [ Customer ]31.03.2012F3X - Andreas Förthner media.netlogix.de 19
    • 29. POLICY acls: Customer: methods: RestrictedController_customerAction: GRANT RestrictedController_adminAction: DENY Administrator: methods: RestrictedController_customerAction: GRANT RestrictedController_adminAction: GRANT31.03.2012F3X - Andreas Förthner media.netlogix.de 20
    • 30. AUTORISIERUNG Mass-Assignment -> vgl. Github resources: methods: User_makeAdmin: "method(MyPackageUser->setAdmin())"31.03.2012F3X - Andreas Förthner media.netlogix.de 21
    • 31. CONTENT SECURITY SECURITY KANN MAN GANZ AM ENDE „HINZUFÜGEN“!31.03.2012F3X - Andreas Förthner media.netlogix.de 22
    • 32. 31.03.2012F3X - Andreas Förthner media.netlogix.de 23
    • 33. 31.03.2012F3X - Andreas Förthner media.netlogix.de 23
    • 34. CONTENT SECURITY31.03.2012F3X - Andreas Förthner media.netlogix.de 24
    • 35. CONTENT SECURITY Sicherheit für gespeicherte Daten31.03.2012F3X - Andreas Förthner media.netlogix.de 24
    • 36. CONTENT SECURITY Sicherheit für gespeicherte Daten ... d.h. für peristierte Objekte31.03.2012F3X - 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ückgegeben31.03.2012F3X - 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 um31.03.2012F3X - 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.2012F3X - Andreas Förthner media.netlogix.de 24
    • 40. CONTENT SECURITY resources: entities: TYPO3_FLOW3_Tests_Functional_Security_Fixtures_RestrictableEntity: TYPO3_FLOW3_allEntities: "ANY" TYPO3_FLOW3_hiddenEntities: "this.hidden == TRUE" TYPO3_FLOW3_othersEntities: "current.securityContext.account != this.ownerAccount && this.ownerAccount != NULL"31.03.2012F3X - Andreas Förthner media.netlogix.de 25
    • 41. CONTENT SECURITY DEMNÄCHST IN IHREM FLOW3:31.03.2012F3X - Andreas Förthner media.netlogix.de 26
    • 42. CONTENT SECURITY DEMNÄCHST IN IHREM FLOW3: CONTENT SECURITY FÜR DQL31.03.2012F3X - 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.2012F3X - Andreas Förthner media.netlogix.de 27
    • 44. WAS ES SONST NOCH ZU SEHEN GIBT...31.03.2012F3X - Andreas Förthner media.netlogix.de 28
    • 45. WAS ES SONST NOCH ZU SEHEN GIBT... Virus!31.03.2012F3X - Andreas Förthner media.netlogix.de 28
    • 46. WAS ES SONST NOCH ZU SEHEN GIBT...31.03.2012F3X - Andreas Förthner media.netlogix.de 29
    • 47. WAS ES SONST NOCH ZU SEHEN GIBT... Was steckt dahinter?31.03.2012F3X - 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.2012F3X - 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ösung31.03.2012F3X - 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) Actions31.03.2012F3X - 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 AOP31.03.2012F3X - 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 explizit31.03.2012F3X - Andreas Förthner media.netlogix.de 29
    • 53. WAS ES SONST NOCH ZU SEHEN GIBT...31.03.2012F3X - Andreas Förthner media.netlogix.de 30
    • 54. WAS ES SONST NOCH ZU SEHEN GIBT... Zentrale Utility-Klassen für31.03.2012F3X - 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.2012F3X - 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.2012F3X - 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 Downloads31.03.2012F3X - 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.2012F3X - Andreas Förthner media.netlogix.de 30
    • 59. SO LONG AND THANKS FOR THE FISH... Vielen Dank! Gibt es Fragen?31.03.2012F3X - Andreas Förthner media.netlogix.de 31