Cookies och Websockets

3,393
-1

Published on

Slides from my presentation at the OWASP Sweden event at January 31st 2011 in Stockholm.

Slides in Swedish.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

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

No notes for slide

Cookies och Websockets

  1. 1. Cookies ochWebsockets 31:a januari 2011
  2. 2. Daniel Stenberg● Free Software● Network hacker● Embedded developer● Consultant Email: daniel@haxx.se Twitter: @bagder Web: daniel.haxx.se Blog: daniel.haxx.se/blog
  3. 3. att snacka om● och vad vet jag då● IETF● HTTP● cookies● Websockets
  4. 4. Frågor?● avbryt!● kommentera!● påpeka!
  5. 5. nät och protokoll● skapade curl och är maintainer● leder projekten c­ares och libssh2● deltar inom IETFs arbetsgrupper  bland annat HTTPbis, ftpext2,  httpstate och hybi
  6. 6. IETF● “löst sammansatt organisation som  arrangerar diskussioner och  överenskommelser om den teknik som skall  användas på Internet” (Wikipedia)● “rough consensus and running code”● grundades 1986● RFCer
  7. 7. HTTP
  8. 8. HTTPbis● startade 2007● uppdaterar RFC2616, tar in errata, tar  bort saker saker som inte funkar eller  aldrig använts● hitta inte på något nytt! det är  fortfarande HTTP 1.1● klargör svåra avsnitt● 2010 lades HTTP authentication till
  9. 9. Cookies
  10. 10. http­state● inspirerat av HTTPbis­gruppens  jobb● dokumentera hur cookies  används● Existerande specar obsoletas● överväg nyheter som kommit  utanför specar
  11. 11. historia● Uppfanns av Lou Montulli (Lynx  och sedan Netscape) i början av  90­talet● (även blink­taggen!)
  12. 12. Netscape­”specen”● 1994● stora luckor● inte HTTP­mässigt● problem med charset● klantig datum/expire­hantering● domain­attribut med problem
  13. 13. Efter Netscape­specen Andra följde efter
  14. 14. RFC 2109, första försöket● 1997● baserat på Netscapes format● Max­Age= istället för expires● Version=1● Comment=comment
  15. 15. RFC 2109Ingen implementerade
  16. 16. RFC2965, andra försöket● år 2000● ersätter RFC2109● Set­Cookie2:● Discard● Port=
  17. 17. RFC 2965Ingen implementerade
  18. 18. Nu ­ det tredje försöket● Baserat på Netscape­specen● Lägg till Max­Age och HTTPonly● Browser­vendors ombord● Inkluderar saker som ordningssortering, hur man  parsar datum och hur långa cookies får vara.● Har inte löst TLD­domain­problemet● Hur gör de flesta?● Testa● Dokumentera
  19. 19. RFC xxxxKommer det att funka nu?
  20. 20. Cookie RFC på riktigt● Därför att det inte är något nytt● Därför att alla redan nästan gör  såhär● Därför att form+cookie auth är  en dominerande login­teknik på  webben
  21. 21. WebSockets
  22. 22. Bidirektionell eller server­ initierad HTTP● Traditionellt löst med long­polling  eller AJAX● WHATWGs arbete med HTML5  introducerade konceptet● WHATWG lämnade över  protokoll­delen till IETF i mars 2009 ● Det där med server­initierad...
  23. 23. Passar bra i tiden● Maj 2010● November 2010● Idag
  24. 24. Politiken kunde börja● WHATWG är inte en standard­  organisation● IETF är väldigt annorlunda än  WHATWG● En bestämmer vs konsensus● Browser­vendors­klubb vs alla  som vill vara med
  25. 25. Requirement document● Vad ska Hybi / WebSockets  egentligen klara av?● Dokumentet har aldrig blivit till  något som används● WebSockets är ett meddelande­ baserat protokoll för bidirektionell  trafik över TCP
  26. 26. API + protokoll● WebSockets är att javascript­API  enligt HTML5● WebSockets är ett TCP­baserat  protokoll
  27. 27. Diskussionspunkter● text och/eller binärt● HTTP compliance● längd­fält eller start­stop● fixed­length längd­fält eller variabelt● storlek på fixed­length fält● hur hantera extensions● hur undvika cross­protocol attacker● HTTP upgrade, CONNECT eller annat● egen port eller port 80 / 443● Masking eller inte● Vilken sorts masking: XOR, HMAC eller AES 
  28. 28. Webbläsare● Chrome och Safari skeppar ­00● Firefox och Opera disablade pga  säkerhet● IE är inte med på tåget● Alla vill se WebSockets skeppat
  29. 29. ­04 + spekulationer
  30. 30. HTTP handskakningOPTIONS /chat HTTP/1.1Host: server.example.comUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==Sec-WebSocket-Origin: http://example.comSec-WebSocket-Protocol: chat, superchatSec-WebSocket-Version: 4HTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-WebSocket-Accept: me89jWimTRKTWwrS3aRrL53YZSo=
  31. 31. HTTP handskakningOPTIONS /chat HTTP/1.1Host: server.example.comUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==Sec-WebSocket-Origin: http://example.comSec-WebSocket-Protocol: chat, superchatSec-WebSocket-Version: 4HTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-WebSocket-Accept: me89jWimTRKTWwrS3aRrL53YZSo=
  32. 32. HTTP handskakningOPTIONS /chat HTTP/1.1Host: server.example.comUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==Sec-WebSocket-Origin: http://example.comSec-WebSocket-Protocol: chat, superchatSec-WebSocket-Version: 4HTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-WebSocket-Accept: me89jWimTRKTWwrS3aRrL53YZSo=
  33. 33. HTTP handskakningOPTIONS /chat HTTP/1.1Host: server.example.comUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==Sec-WebSocket-Origin: http://example.comSec-WebSocket-Protocol: chat, superchatSec-WebSocket-Version: 4HTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-WebSocket-Accept: me89jWimTRKTWwrS3aRrL53YZSo=
  34. 34. WebSockets frames 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-------+-+-------------+-------------------------------+|F|R|R|R| opcode|R| Payload len | Extended payload length ||I|S|S|S| (4) |S| (7) | (16/63) ||N|V|V|V| |V| | (if payload len==126/127) || |1|2|3| |4| | |+-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - +| Extended payload length continued, if payload len == 127 |+ - - - - - - - - - - - - - - - +-------------------------------+| | Extension data |+-------------------------------+ - - - - - - - - - - - - - - - +: :+---------------------------------------------------------------+: Application data :+---------------------------------------------------------------+● små storlekar == litet längdfält
  35. 35. Client masking● The client MUST mask all frames  sent to the server.● Omaskerat från servern● Syftet är att undvika cross­ protocol attacker och cache­ poisoning
  36. 36. Maskering == XOR 32 bit nyckel längd XORad data
  37. 37. Websockets kommer● Alla vill se Websockets hända● ­76/­00 ­problemen kanske var  bra!● Starka viljor● Till sommaren 2011? Hösten?
  38. 38. Summering● Cookie RFC inom kort● Websockets lite längre bort
  39. 39. Tack för mig!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×