SlideShare a Scribd company logo
1 of 38
Download to read offline
Web Application Security
 Hacking Your Way In!

     Julien Rentrop
     Peter Schuler
Wie wij zijn

• Julien Rentrop
• julien.rentrop@ordina.nl
• Java software engineer



• Peter Schuler
• peter.schuler@gmail.com
• Zelfstandig Java Trainer
  & Architect
Agenda

•   Injection                    #1 OWASP top 10
•   Cross Site Scripting         #2
•   Session Hijacking            #3
•   Cross Site Request Forgery   #5

Bezoek www.owasp.org voor meer informatie.
Injection

• Injecteren commando’s in invoer parameters

  "select * from User
  where name = '" + name + "'"

                      Hans
Injection

• Injecteren commando’s in invoer parameters

  "select * from User
  where name = '" + name + "'"

               Hans' or '1'='1

• Injection is niet alleen SQL
   – XML, XPath, LDAP, dynamic code eval, …
Demo 1: Injection
• Hoe zag de code er uit?
            Demo 1: Injection
String jpql = "select p from Persoon p " +
"where emailadres = '" + emailadrs + "' " +
"and wachtwoord = '" + encodedww + "'";

Query query = em.createQuery(jpql);



• Wat is de oplossing?
Injection Voorkomen

 • Parameter binding API’s
String jpql = "select p from Persoon p " +
"where emailadres = :email " +
"and wachtwoord = :pass";

Query query = em.createQuery(jpql);
query.setParameter("email", emailadres);
query.setParameter("pass", encodedww);

 • Escaping
 • Invoer validatie
Agenda

•   Injection
•   Cross Site Scripting
•   Session Hijacking
•   Cross Site Request Forgery
Cross Site Scripting (XSS)

• Hoe werkt het?
  – Aanvaller plaatst eigen HTML/JS op site
  – Slachtoffer bezoekt site
  – Aanvaller heeft controle over site en de
    browser.
Reflected XSS
                                 Aanvaller laat script via
                                 slachtoffer en server
                                 reflecteren.


     http://bank.it/?name="><script>..</script>




         ..<input value=""><script>..</script>..




• Aanvaller lokt slachtoffer
   • Email met link, redirect, frame, url shortener, ..
• Hoe zag de code er uit?
            Demo 2: Cross Site Scripting
<input type="text" name="emailadres"
       value="${param.emailadres}"/>


• Emailadres wordt rechtstreeks uit EL
  overgenomen.
Stored XSS



POST name="><script>..</script>




                                  Bezoekers krijgen
                                  opgeslagen script.
Cross Site Scripting (XSS)

• HTML5 features maken meer mogelijk

• Voorkomen
  – Escapen voor renderen
  – Voor juiste context escapen
     • HTML, JavaScript, CSS, URL
  – Invoer validatie
     • White listing, strong typing, limiteren lengte
Agenda

•   Injection
•   Cross Site Scripting
•   Session Hijacking
•   Cross Site Request Forgery
HTTP Sessions




                    HTTP GET


                     HTTP OK




HTTP Protocol = Stateless protocol
HTTP Sessions




HTTP Protocol = Stateless protocol
HTTP Sessions




IRL Moeten we
communiceren met
meerdere clients
Session Cookies




Client sessies krijgen
ieder een uniek cookie/id.
• Wat is een cookie eigenlijk?
            Session Cookies
• Een cookie is een HTTP Header vanaf de server:
   HTTP/1.1 200 OK
   Content-type: text/html
   Set-Cookie: name=value
   Set-Cookie: JSESSIONID=5A53044AA6CB36363D3;
   Expires=Wed, 09 Jun 2021 10:18:14 GMT
• De client stuurt deze data bij ieder verzoek mee:
   GET /spec.html HTTP/1.1
   Host: www.example.org
   Cookie: JSESSIONID=5A53044AA6CB36363D3;
   name=value

• Een cookie is dus plain text data.
• Wat is een cookie nu eigenlijk?
            HTTP Sessions
• Een cookie is een HTTP Header vanaf de server:
   HTTP/1.1 200 OK
   Content-type: text/html
   Set-Cookie: name=value
           Plain text HTTP verkeer
   Set-Cookie: JSESSIONID=5A53044AA6CB36363D3;
   Expires=Wed, 09 Jun 2021 10:18:14 GMT
                  kan je sniffen!
• De client stuurt deze data bij ieder verzoek mee:
   GET /spec.html HTTP/1.1
   Host: www.example.org
   Cookie: SESSIONID=5A53044AA6CB36363D3;
   name=value

• Een cookie is dus plain text data.
Demo 4: Session Hijacking
Hoe raak je cookies kwijt?

• Onbeveiligd HTTP verkeer. Bv. FireSheep.
• Via XSS en Javascript: document.cookie.
• Via Trojans en Virussen die specifiek jacht
  maken op actieve sessions.
• Social Engineering.

• Andere optie: Session Fixation.
• Aanvaller lokt slachtoffer met URL rewriting:
• http://......page/;JSESSIONID=FFB6583DF13
Hoe helpt het HTTP protocol?

• Moderne browers helpen met nieuwe opties
  voor cookies:
  – HttpOnly schermt het cookie af van Javascript.
  – Secure alleen meegestuurd met SSL
    verbindingen.
 HTTP/1.1 200 OK
 Content-type: text/html
 Set-Cookie: JSESSIONID=5A53044AA6CB36363D3;
 Secure; HttpOnly
Hoe helpt JEE6?

• Servlet 3.0 spec biedt hulp:
  – Ondersteuning voor HttpOnly en Secure.
  – Vergaande configuratie SessionCookie mogelijk.


• Applicatief en via de web.xml.
• Declaratief:
            Hoe helpt JEE6?
 <session-config>
   <session-timeout>30</session-timeout>
 • <cookie-config>
   Servlet 3.0 spec biedt hulp:
    – <name>id</name> HttpOnly en Secure.
      Ondersteuning voor
      <http-only>true</http-only>
    – <secure>true</secure>
      Vergaande configuratie SessionCookie mogelijk.
   </cookie-config>
 • <tracking-mode>COOKIE</tracking-mode>
   Applicatief en via de web.xml.
   <tracking-mode>URL</tracking-mode>
 </session-config>
• cookie-config laat je de cookie setting instellen.
• Tracking mode laat je URL rewriting uitschakelen!
• Declaratief:
            Hoe helpt JEE6?
 ServletContext sContext =
 <session-config>
   <session-timeout>30</session-timeout>
       sce.getServletContext();
 • <cookie-config>
 SessionCookieConfig sessionCookieConfig
   Servlet 3.0 spec biedt hulp:
    – <name>id</name> HttpOnly en Secure.
       = sContext.getSessionCookieConfig();
      Ondersteuning voor
      <http-only>true</http-only>
    – <secure>true</secure>
 sessionCookieConfig.setName("ID"); mogelijk.
      Vergaande configuratie SessionCookie
 sessionCookieConfig.setSecure(true);
   </cookie-config>
 sessionCookieConfig.setHttpOnly(true);
 • <tracking-mode>COOKIE</tracking-mode>
   Applicatief en via de web.xml.
• </session-config>cookies via Cookie class.
   Bescherm je eigen
• URL rewriting uitschakelen kan niet via code.
• cookie-config laat je de cookie setting instellen.
• Tracking mode laat je URL rewriting uitschakelen!
Session Hijacking: Wat kan je zelf
            doen?
1.   Bescherm je session met HttpOnly en Secure.
2.   Geef je session cookie een andere naam.
3.   Schakel URL rewriting uit met tracking mode.
4.   Reset je Session bij iedere inlog poging.

•    Geen Servlet 3.0? Geen nood.
     – De middleware kan je ook helpen.
     – Tomcat ondersteunt Secure en HttpOnly al
       vanaf versie 5.5 in de context.xml.
Agenda

•   Injection
•   Cross Site Scripting
•   Session Hijacking
•   Cross Site Request Forgery
Cross Site Request Forgery


                                      server
www.linkedIn.com   +
                   +




    peter
    **********
Cross Site Request Forgery


                                    server
www.linkedIn.com
www.linkedIn.com   +
                   +
Cross Site Request Forgery


                                      server
www.linkedIn.com   evilSite.org
                   evilSite.org   +
Demo 5: CSRF
• Hoe werkte deze aanval?
• In de HTML:
           Demo 5: CSRF
 <img
 src="https://loc.....sie/uitschrijven.do?
 cursistId=7&cursusSessieId=2" />
• Openen van de pagina activeerde het
  downloaden van het image en de aanval.
• Een CSRF aanval kan overal verstop zijn:
  –   In een iFrame.
  –   Een eigen hidden HTML form.
  –   Een gekaapt HTML form.
  –   Etc etc..
CSRF Aanval

• Een CSRF request kan overal vandaan komen:
  – XSS in de doel website.
  – XSS in een willekeurige andere site.
  – Een email.


• Bekend voorbeeld is de Sammy Worm
CSRF Voorkomen

• De oplossing is simpel:
• Autoriseer niet de browser, maar de pagina om
  verzoeken te versturen.

• Geef ieder request een random token.
• Controleer het token bij ieder verzoek .

• Gebruik hiervoor b.v. ServletFilter.
Frameworks helpen!

• Een aantal frameworks hebben ingebouwde
  bescherming tegen CSRF:

• Wicket middels een
  CryptedUrlWebRequestCodingStrategy.

• In JSF biedt de javax.faces.ViewState
  enige bescherming! Implementatie afhankelijk.
• Van JSF 2.1 meer mogelijkheden.
Tot slot

• Bedankt!

• www.OWASP.org bevat veel informatie over
  deze en andere aanvallen.

• Voor vragen:
• peter.schuler@gmail.com
• julien.rentrop@ordina.nl .

More Related Content

Similar to Web Application Security; Hacking your way in!

Security audit van een Drupal site
Security audit van een Drupal siteSecurity audit van een Drupal site
Security audit van een Drupal siteMaurits Lawende
 
Robot framework en Browser Library
Robot framework en Browser LibraryRobot framework en Browser Library
Robot framework en Browser Librarychristiantester
 
SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014
SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014
SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014Joost de Valk
 
De 10 geboden van WordPress Development
De 10 geboden van WordPress DevelopmentDe 10 geboden van WordPress Development
De 10 geboden van WordPress DevelopmentFloris Lof
 
Techdays 2013 NL - Serious Request met Windows Azure
Techdays 2013 NL - Serious Request met Windows AzureTechdays 2013 NL - Serious Request met Windows Azure
Techdays 2013 NL - Serious Request met Windows AzureMichaël Hompus
 
Sijmen Ruwhof - Geautomatiseerd website vulnerability management
Sijmen Ruwhof - Geautomatiseerd website vulnerability managementSijmen Ruwhof - Geautomatiseerd website vulnerability management
Sijmen Ruwhof - Geautomatiseerd website vulnerability managementPFCongres
 
Page experience de nieuwe ranking factor voor seo
Page experience de nieuwe ranking factor voor seoPage experience de nieuwe ranking factor voor seo
Page experience de nieuwe ranking factor voor seovalantic NL
 
Encryption, PKI Introduction (Dutch)
Encryption, PKI Introduction (Dutch)Encryption, PKI Introduction (Dutch)
Encryption, PKI Introduction (Dutch)LexZwetsloot
 
JUG Nederland - Presentatie SSL Certificaten - Hoe, waarom & waarmee.
JUG Nederland - Presentatie SSL Certificaten - Hoe, waarom & waarmee.JUG Nederland - Presentatie SSL Certificaten - Hoe, waarom & waarmee.
JUG Nederland - Presentatie SSL Certificaten - Hoe, waarom & waarmee.Wilco Alsemgeest
 
Html5 jeugdwerknet
Html5 jeugdwerknetHtml5 jeugdwerknet
Html5 jeugdwerknetHans Rossel
 
Hackers traced - Meet Magento 2016
Hackers traced -  Meet Magento 2016Hackers traced -  Meet Magento 2016
Hackers traced - Meet Magento 2016Byte
 
EMMA-nl E-mail authenticatie workshop
EMMA-nl E-mail authenticatie workshopEMMA-nl E-mail authenticatie workshop
EMMA-nl E-mail authenticatie workshopMaarten Oelering
 
Correct toepassen van cryptografie - (ISC)2 NL - 10 juni 2014
Correct toepassen van cryptografie - (ISC)2 NL - 10 juni 2014Correct toepassen van cryptografie - (ISC)2 NL - 10 juni 2014
Correct toepassen van cryptografie - (ISC)2 NL - 10 juni 2014Luuk Danes
 
Let's Encrypt Techtalk @Openminds
Let's Encrypt Techtalk @OpenmindsLet's Encrypt Techtalk @Openminds
Let's Encrypt Techtalk @Openmindssorcix
 

Similar to Web Application Security; Hacking your way in! (20)

Security audit van een Drupal site
Security audit van een Drupal siteSecurity audit van een Drupal site
Security audit van een Drupal site
 
Robot framework en Browser Library
Robot framework en Browser LibraryRobot framework en Browser Library
Robot framework en Browser Library
 
SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014
SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014
SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014
 
De 10 geboden van WordPress Development
De 10 geboden van WordPress DevelopmentDe 10 geboden van WordPress Development
De 10 geboden van WordPress Development
 
Techdays 2013 NL - Serious Request met Windows Azure
Techdays 2013 NL - Serious Request met Windows AzureTechdays 2013 NL - Serious Request met Windows Azure
Techdays 2013 NL - Serious Request met Windows Azure
 
Hoe bouw ik een PKI omgeving?
Hoe bouw ik een PKI omgeving?Hoe bouw ik een PKI omgeving?
Hoe bouw ik een PKI omgeving?
 
Sijmen Ruwhof - Geautomatiseerd website vulnerability management
Sijmen Ruwhof - Geautomatiseerd website vulnerability managementSijmen Ruwhof - Geautomatiseerd website vulnerability management
Sijmen Ruwhof - Geautomatiseerd website vulnerability management
 
WordPress Security
WordPress SecurityWordPress Security
WordPress Security
 
Page experience de nieuwe ranking factor voor seo
Page experience de nieuwe ranking factor voor seoPage experience de nieuwe ranking factor voor seo
Page experience de nieuwe ranking factor voor seo
 
Encryption, PKI Introduction (Dutch)
Encryption, PKI Introduction (Dutch)Encryption, PKI Introduction (Dutch)
Encryption, PKI Introduction (Dutch)
 
JUG Nederland - Presentatie SSL Certificaten - Hoe, waarom & waarmee.
JUG Nederland - Presentatie SSL Certificaten - Hoe, waarom & waarmee.JUG Nederland - Presentatie SSL Certificaten - Hoe, waarom & waarmee.
JUG Nederland - Presentatie SSL Certificaten - Hoe, waarom & waarmee.
 
Html5 jeugdwerknet
Html5 jeugdwerknetHtml5 jeugdwerknet
Html5 jeugdwerknet
 
Hackers traced - Meet Magento 2016
Hackers traced -  Meet Magento 2016Hackers traced -  Meet Magento 2016
Hackers traced - Meet Magento 2016
 
Emma Authenticatie Workshop
Emma Authenticatie WorkshopEmma Authenticatie Workshop
Emma Authenticatie Workshop
 
EMMA-nl E-mail authenticatie workshop
EMMA-nl E-mail authenticatie workshopEMMA-nl E-mail authenticatie workshop
EMMA-nl E-mail authenticatie workshop
 
Correct toepassen van cryptografie - (ISC)2 NL - 10 juni 2014
Correct toepassen van cryptografie - (ISC)2 NL - 10 juni 2014Correct toepassen van cryptografie - (ISC)2 NL - 10 juni 2014
Correct toepassen van cryptografie - (ISC)2 NL - 10 juni 2014
 
2010 byte joomladagen
2010 byte joomladagen2010 byte joomladagen
2010 byte joomladagen
 
Let's Encrypt Techtalk @Openminds
Let's Encrypt Techtalk @OpenmindsLet's Encrypt Techtalk @Openminds
Let's Encrypt Techtalk @Openminds
 
New and improved ASP.NET MVC 5
New and improved ASP.NET MVC 5New and improved ASP.NET MVC 5
New and improved ASP.NET MVC 5
 
Beveiliging en REST services
Beveiliging en REST servicesBeveiliging en REST services
Beveiliging en REST services
 

Web Application Security; Hacking your way in!

  • 1. Web Application Security Hacking Your Way In! Julien Rentrop Peter Schuler
  • 2. Wie wij zijn • Julien Rentrop • julien.rentrop@ordina.nl • Java software engineer • Peter Schuler • peter.schuler@gmail.com • Zelfstandig Java Trainer & Architect
  • 3. Agenda • Injection #1 OWASP top 10 • Cross Site Scripting #2 • Session Hijacking #3 • Cross Site Request Forgery #5 Bezoek www.owasp.org voor meer informatie.
  • 4. Injection • Injecteren commando’s in invoer parameters "select * from User where name = '" + name + "'" Hans
  • 5. Injection • Injecteren commando’s in invoer parameters "select * from User where name = '" + name + "'" Hans' or '1'='1 • Injection is niet alleen SQL – XML, XPath, LDAP, dynamic code eval, …
  • 7. • Hoe zag de code er uit? Demo 1: Injection String jpql = "select p from Persoon p " + "where emailadres = '" + emailadrs + "' " + "and wachtwoord = '" + encodedww + "'"; Query query = em.createQuery(jpql); • Wat is de oplossing?
  • 8. Injection Voorkomen • Parameter binding API’s String jpql = "select p from Persoon p " + "where emailadres = :email " + "and wachtwoord = :pass"; Query query = em.createQuery(jpql); query.setParameter("email", emailadres); query.setParameter("pass", encodedww); • Escaping • Invoer validatie
  • 9. Agenda • Injection • Cross Site Scripting • Session Hijacking • Cross Site Request Forgery
  • 10. Cross Site Scripting (XSS) • Hoe werkt het? – Aanvaller plaatst eigen HTML/JS op site – Slachtoffer bezoekt site – Aanvaller heeft controle over site en de browser.
  • 11. Reflected XSS Aanvaller laat script via slachtoffer en server reflecteren. http://bank.it/?name="><script>..</script> ..<input value=""><script>..</script>.. • Aanvaller lokt slachtoffer • Email met link, redirect, frame, url shortener, ..
  • 12. • Hoe zag de code er uit? Demo 2: Cross Site Scripting <input type="text" name="emailadres" value="${param.emailadres}"/> • Emailadres wordt rechtstreeks uit EL overgenomen.
  • 13. Stored XSS POST name="><script>..</script> Bezoekers krijgen opgeslagen script.
  • 14. Cross Site Scripting (XSS) • HTML5 features maken meer mogelijk • Voorkomen – Escapen voor renderen – Voor juiste context escapen • HTML, JavaScript, CSS, URL – Invoer validatie • White listing, strong typing, limiteren lengte
  • 15. Agenda • Injection • Cross Site Scripting • Session Hijacking • Cross Site Request Forgery
  • 16. HTTP Sessions HTTP GET HTTP OK HTTP Protocol = Stateless protocol
  • 17. HTTP Sessions HTTP Protocol = Stateless protocol
  • 18. HTTP Sessions IRL Moeten we communiceren met meerdere clients
  • 19. Session Cookies Client sessies krijgen ieder een uniek cookie/id.
  • 20. • Wat is een cookie eigenlijk? Session Cookies • Een cookie is een HTTP Header vanaf de server: HTTP/1.1 200 OK Content-type: text/html Set-Cookie: name=value Set-Cookie: JSESSIONID=5A53044AA6CB36363D3; Expires=Wed, 09 Jun 2021 10:18:14 GMT • De client stuurt deze data bij ieder verzoek mee: GET /spec.html HTTP/1.1 Host: www.example.org Cookie: JSESSIONID=5A53044AA6CB36363D3; name=value • Een cookie is dus plain text data.
  • 21. • Wat is een cookie nu eigenlijk? HTTP Sessions • Een cookie is een HTTP Header vanaf de server: HTTP/1.1 200 OK Content-type: text/html Set-Cookie: name=value Plain text HTTP verkeer Set-Cookie: JSESSIONID=5A53044AA6CB36363D3; Expires=Wed, 09 Jun 2021 10:18:14 GMT kan je sniffen! • De client stuurt deze data bij ieder verzoek mee: GET /spec.html HTTP/1.1 Host: www.example.org Cookie: SESSIONID=5A53044AA6CB36363D3; name=value • Een cookie is dus plain text data.
  • 22. Demo 4: Session Hijacking
  • 23. Hoe raak je cookies kwijt? • Onbeveiligd HTTP verkeer. Bv. FireSheep. • Via XSS en Javascript: document.cookie. • Via Trojans en Virussen die specifiek jacht maken op actieve sessions. • Social Engineering. • Andere optie: Session Fixation. • Aanvaller lokt slachtoffer met URL rewriting: • http://......page/;JSESSIONID=FFB6583DF13
  • 24. Hoe helpt het HTTP protocol? • Moderne browers helpen met nieuwe opties voor cookies: – HttpOnly schermt het cookie af van Javascript. – Secure alleen meegestuurd met SSL verbindingen. HTTP/1.1 200 OK Content-type: text/html Set-Cookie: JSESSIONID=5A53044AA6CB36363D3; Secure; HttpOnly
  • 25. Hoe helpt JEE6? • Servlet 3.0 spec biedt hulp: – Ondersteuning voor HttpOnly en Secure. – Vergaande configuratie SessionCookie mogelijk. • Applicatief en via de web.xml.
  • 26. • Declaratief: Hoe helpt JEE6? <session-config> <session-timeout>30</session-timeout> • <cookie-config> Servlet 3.0 spec biedt hulp: – <name>id</name> HttpOnly en Secure. Ondersteuning voor <http-only>true</http-only> – <secure>true</secure> Vergaande configuratie SessionCookie mogelijk. </cookie-config> • <tracking-mode>COOKIE</tracking-mode> Applicatief en via de web.xml. <tracking-mode>URL</tracking-mode> </session-config> • cookie-config laat je de cookie setting instellen. • Tracking mode laat je URL rewriting uitschakelen!
  • 27. • Declaratief: Hoe helpt JEE6? ServletContext sContext = <session-config> <session-timeout>30</session-timeout> sce.getServletContext(); • <cookie-config> SessionCookieConfig sessionCookieConfig Servlet 3.0 spec biedt hulp: – <name>id</name> HttpOnly en Secure. = sContext.getSessionCookieConfig(); Ondersteuning voor <http-only>true</http-only> – <secure>true</secure> sessionCookieConfig.setName("ID"); mogelijk. Vergaande configuratie SessionCookie sessionCookieConfig.setSecure(true); </cookie-config> sessionCookieConfig.setHttpOnly(true); • <tracking-mode>COOKIE</tracking-mode> Applicatief en via de web.xml. • </session-config>cookies via Cookie class. Bescherm je eigen • URL rewriting uitschakelen kan niet via code. • cookie-config laat je de cookie setting instellen. • Tracking mode laat je URL rewriting uitschakelen!
  • 28. Session Hijacking: Wat kan je zelf doen? 1. Bescherm je session met HttpOnly en Secure. 2. Geef je session cookie een andere naam. 3. Schakel URL rewriting uit met tracking mode. 4. Reset je Session bij iedere inlog poging. • Geen Servlet 3.0? Geen nood. – De middleware kan je ook helpen. – Tomcat ondersteunt Secure en HttpOnly al vanaf versie 5.5 in de context.xml.
  • 29. Agenda • Injection • Cross Site Scripting • Session Hijacking • Cross Site Request Forgery
  • 30. Cross Site Request Forgery server www.linkedIn.com + + peter **********
  • 31. Cross Site Request Forgery server www.linkedIn.com www.linkedIn.com + +
  • 32. Cross Site Request Forgery server www.linkedIn.com evilSite.org evilSite.org +
  • 34. • Hoe werkte deze aanval? • In de HTML: Demo 5: CSRF <img src="https://loc.....sie/uitschrijven.do? cursistId=7&cursusSessieId=2" /> • Openen van de pagina activeerde het downloaden van het image en de aanval. • Een CSRF aanval kan overal verstop zijn: – In een iFrame. – Een eigen hidden HTML form. – Een gekaapt HTML form. – Etc etc..
  • 35. CSRF Aanval • Een CSRF request kan overal vandaan komen: – XSS in de doel website. – XSS in een willekeurige andere site. – Een email. • Bekend voorbeeld is de Sammy Worm
  • 36. CSRF Voorkomen • De oplossing is simpel: • Autoriseer niet de browser, maar de pagina om verzoeken te versturen. • Geef ieder request een random token. • Controleer het token bij ieder verzoek . • Gebruik hiervoor b.v. ServletFilter.
  • 37. Frameworks helpen! • Een aantal frameworks hebben ingebouwde bescherming tegen CSRF: • Wicket middels een CryptedUrlWebRequestCodingStrategy. • In JSF biedt de javax.faces.ViewState enige bescherming! Implementatie afhankelijk. • Van JSF 2.1 meer mogelijkheden.
  • 38. Tot slot • Bedankt! • www.OWASP.org bevat veel informatie over deze en andere aanvallen. • Voor vragen: • peter.schuler@gmail.com • julien.rentrop@ordina.nl .