Successfully reported this slideshow.
Your SlideShare is downloading. ×

Cookies och Websockets

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
Tor Cryptoparty 2016
Tor Cryptoparty 2016
Loading in …3
×

Check these out next

1 of 39 Ad
Advertisement

More Related Content

Similar to Cookies och Websockets (20)

More from Daniel Stenberg (20)

Advertisement

Cookies och Websockets

  1. 1. Cookies och Websockets 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 2109 Ingen implementerade
  16. 16. RFC2965, andra försöket ● år 2000 ● ersätter RFC2109 ● Set­Cookie2: ● Discard ● Port=
  17. 17. RFC 2965 Ingen 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 xxxx Kommer 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 handskakning OPTIONS /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Sec-WebSocket-Origin: http://example.com Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version: 4 HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: me89jWimTRKTWwrS3aRrL53YZSo=
  31. 31. HTTP handskakning OPTIONS /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Sec-WebSocket-Origin: http://example.com Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version: 4 HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: me89jWimTRKTWwrS3aRrL53YZSo=
  32. 32. HTTP handskakning OPTIONS /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Sec-WebSocket-Origin: http://example.com Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version: 4 HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: me89jWimTRKTWwrS3aRrL53YZSo=
  33. 33. HTTP handskakning OPTIONS /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Sec-WebSocket-Origin: http://example.com Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version: 4 HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-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!

×