Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Cookies ochWebsockets   31:a januari 2011
Daniel Stenberg●    Free Software●    Network hacker●    Embedded developer●    Consultant    Email:     daniel@haxx.se   ...
att snacka om●    och vad vet jag då●    IETF●    HTTP●    cookies●    Websockets
Frågor?●    avbryt!●    kommentera!●    påpeka!
nät och protokoll●    skapade curl och är maintainer●    leder projekten c­ares och libssh2●    deltar inom IETFs arbetsgr...
IETF●   “löst sammansatt organisation som     arrangerar diskussioner och     överenskommelser om den teknik som skall    ...
HTTP
HTTPbis●   startade 2007●   uppdaterar RFC2616, tar in errata, tar     bort saker saker som inte funkar eller     aldrig a...
Cookies
http­state●    inspirerat av HTTPbis­gruppens     jobb●    dokumentera hur cookies     används●    Existerande specar obso...
historia●    Uppfanns av Lou Montulli (Lynx     och sedan Netscape) i början av     90­talet●    (även blink­taggen!)
Netscape­”specen”●    1994●    stora luckor●    inte HTTP­mässigt●    problem med charset●    klantig datum/expire­hanteri...
Efter Netscape­specen     Andra följde efter
RFC 2109, första försöket●    1997●    baserat på Netscapes format●    Max­Age= istället för expires●    Version=1●    Com...
RFC 2109Ingen implementerade
RFC2965, andra försöket●    år 2000●    ersätter RFC2109●    Set­Cookie2:●    Discard●    Port=
RFC 2965Ingen implementerade
Nu ­ det tredje försöket●   Baserat på Netscape­specen●   Lägg till Max­Age och HTTPonly●   Browser­vendors ombord●   Inkl...
RFC xxxxKommer det att funka nu?
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 ...
WebSockets
Bidirektionell eller server­          initierad HTTP●    Traditionellt löst med long­polling     eller AJAX●    WHATWGs ar...
Passar bra i tiden●    Maj 2010●    November 2010●    Idag
Politiken kunde börja●    WHATWG är inte en standard­     organisation●    IETF är väldigt annorlunda än     WHATWG●    En...
Requirement document●    Vad ska Hybi / WebSockets     egentligen klara av?●    Dokumentet har aldrig blivit till     någo...
API + protokoll●    WebSockets är att javascript­API     enligt HTML5●    WebSockets är ett TCP­baserat     protokoll
Diskussionspunkter●   text och/eller binärt●   HTTP compliance●   längd­fält eller start­stop●   fixed­length längd­fält e...
Webbläsare●    Chrome och Safari skeppar ­00●    Firefox och Opera disablade pga     säkerhet●    IE är inte med på tåget●...
­04 + spekulationer
HTTP handskakningOPTIONS /chat HTTP/1.1Host: server.example.comUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: dGh...
HTTP handskakningOPTIONS /chat HTTP/1.1Host: server.example.comUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: dGh...
HTTP handskakningOPTIONS /chat HTTP/1.1Host: server.example.comUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: dGh...
HTTP handskakningOPTIONS /chat HTTP/1.1Host: server.example.comUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: dGh...
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...
Client masking●    The client MUST mask all frames     sent to the server.●    Omaskerat från servern●    Syftet är att un...
Maskering == XOR    32 bit nyckel       längd    XORad data
Websockets kommer●    Alla vill se Websockets hända●    ­76/­00 ­problemen kanske var     bra!●    Starka viljor●    Till ...
Summering●    Cookie RFC inom kort●    Websockets lite längre bort
Tack för mig!
Upcoming SlideShare
Loading in …5
×

Cookies och Websockets

3,741 views

Published on

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

Slides in Swedish.

Published in: Technology
  • Be the first to comment

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!

×