Your SlideShare is downloading. ×
0
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Cookies och Websockets
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Cookies och Websockets

3,293

Published on

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

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,293
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Cookies ochWebsockets 31:a januari 2011
  • 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. att snacka om● och vad vet jag då● IETF● HTTP● cookies● Websockets
  • 4. Frågor?● avbryt!● kommentera!● påpeka!
  • 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. 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. HTTP
  • 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. Cookies
  • 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. historia● Uppfanns av Lou Montulli (Lynx  och sedan Netscape) i början av  90­talet● (även blink­taggen!)
  • 12. Netscape­”specen”● 1994● stora luckor● inte HTTP­mässigt● problem med charset● klantig datum/expire­hantering● domain­attribut med problem
  • 13. Efter Netscape­specen Andra följde efter
  • 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. RFC 2109Ingen implementerade
  • 16. RFC2965, andra försöket● år 2000● ersätter RFC2109● Set­Cookie2:● Discard● Port=
  • 17. RFC 2965Ingen implementerade
  • 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. RFC xxxxKommer det att funka nu?
  • 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. WebSockets
  • 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. Passar bra i tiden● Maj 2010● November 2010● Idag
  • 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. 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. API + protokoll● WebSockets är att javascript­API  enligt HTML5● WebSockets är ett TCP­baserat  protokoll
  • 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. 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. ­04 + spekulationer
  • 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. 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. 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. 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. 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. 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. Maskering == XOR 32 bit nyckel längd XORad data
  • 37. Websockets kommer● Alla vill se Websockets hända● ­76/­00 ­problemen kanske var  bra!● Starka viljor● Till sommaren 2011? Hösten?
  • 38. Summering● Cookie RFC inom kort● Websockets lite längre bort
  • 39. Tack för mig!

×