cookies och websockets

Post on 19-May-2015

3.292 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Cookies ochWebsockets

31:a januari 2011

Daniel Stenberg

Email: daniel@haxx.seTwitter: @bagderWeb: daniel.haxx.seBlog: daniel.haxx.se/blog

● Free Software● Network hacker● Embedded developer● Consultant

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 arbetsgrupper 

bland annat HTTPbis, ftpext2, httpstate och hybi

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

HTTP

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

Cookies

http­state

● inspirerat av HTTPbis­gruppens jobb

● dokumentera hur cookies används

● Existerande specar obsoletas● överväg nyheter som kommit 

utanför specar

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­hantering● domain­attribut med problem

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● Comment=comment

RFC 2109

Ingen implementerade

RFC2965, andra försöket

● år 2000● ersätter RFC2109● Set­Cookie2:● Discard● Port=

RFC 2965

Ingen implementerade

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

RFC xxxx

Kommer 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 form+cookie auth är 

en dominerande login­teknik på webben

WebSockets

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...

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 bestämmer vs konsensus● Browser­vendors­klubb vs alla 

som vill vara med

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

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 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 

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

­04 + spekulationer

HTTP handskakning

OPTIONS /chat HTTP/1.1Host: server.example.comUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==Sec-WebSocket-Origin: http://example.comSec-WebSocket-Protocol: chat, superchatSec-WebSocket-Version: 4

HTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-WebSocket-Accept: me89jWimTRKTWwrS3aRrL53YZSo=

HTTP handskakning

OPTIONS /chat HTTP/1.1Host: server.example.comUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==Sec-WebSocket-Origin: http://example.comSec-WebSocket-Protocol: chat, superchatSec-WebSocket-Version: 4

HTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-WebSocket-Accept: me89jWimTRKTWwrS3aRrL53YZSo=

HTTP handskakning

OPTIONS /chat HTTP/1.1Host: server.example.comUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==Sec-WebSocket-Origin: http://example.comSec-WebSocket-Protocol: chat, superchatSec-WebSocket-Version: 4

HTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-WebSocket-Accept: me89jWimTRKTWwrS3aRrL53YZSo=

HTTP handskakning

OPTIONS /chat HTTP/1.1Host: server.example.comUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==Sec-WebSocket-Origin: http://example.comSec-WebSocket-Protocol: chat, superchatSec-WebSocket-Version: 4

HTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-WebSocket-Accept: me89jWimTRKTWwrS3aRrL53YZSo=

WebSockets frames

● små storlekar == litet längdfält

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 : +---------------------------------------------------------------+

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

Maskering == XOR32 bit nyckel

längd

XORad data

Websockets kommer

● Alla vill se Websockets hända● ­76/­00 ­problemen kanske var 

bra!● Starka viljor● Till sommaren 2011? Hösten?

Summering

● Cookie RFC inom kort● Websockets lite längre bort

Tack för mig!

top related