O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
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!
Próximos SlideShares
Carregando em…5
×

Cookies och Websockets

3.785 visualizações

Publicada em

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

Slides in Swedish.

Publicada em: Tecnologia
  • Seja o primeiro a comentar

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!

×