This talk introduces and discusses a novel, mostly unpublished technique to successfully attack websites that are applied with state-of-the-art XSS protection. This attack labeled Mutation-XSS (mXSS) is capable of bypassing high-end filter systems by utilizing the browser and its unknown capabilities - every single f***** one of them. We analyzed the type and number of high-profile websites and applications that are affected by this kind of attack. Several live demos during the presentation will share these impressions and help understanding, what mXSS is, why mXSS is possible and why it is of importance for defenders as well as professional attackers to understand and examine mXSS even further. The talk wraps up several years of research on this field, shows the abhorrent findings, discusses the consequences and delivers a step-by-step guide on how to protect against this kind of mayhem - with a strong focus on feasibility and scalability.
gRPC can help minimize the barrier of cross-system communication by providing language-agnostic API definitions, backward and forward compatible versioning with protocol buffers, and pluggable load balancing and tracing. You will see how to quickly get up and running with the gRPC framework using Node.js from creating a protocol definition, creating meaningful health checks, and securing the endpoint. Additionally, this session will go over best practices and how to take full advantage of what gRPC has to offer.
This talk introduces and discusses a novel, mostly unpublished technique to successfully attack websites that are applied with state-of-the-art XSS protection. This attack labeled Mutation-XSS (mXSS) is capable of bypassing high-end filter systems by utilizing the browser and its unknown capabilities - every single f***** one of them. We analyzed the type and number of high-profile websites and applications that are affected by this kind of attack. Several live demos during the presentation will share these impressions and help understanding, what mXSS is, why mXSS is possible and why it is of importance for defenders as well as professional attackers to understand and examine mXSS even further. The talk wraps up several years of research on this field, shows the abhorrent findings, discusses the consequences and delivers a step-by-step guide on how to protect against this kind of mayhem - with a strong focus on feasibility and scalability.
gRPC can help minimize the barrier of cross-system communication by providing language-agnostic API definitions, backward and forward compatible versioning with protocol buffers, and pluggable load balancing and tracing. You will see how to quickly get up and running with the gRPC framework using Node.js from creating a protocol definition, creating meaningful health checks, and securing the endpoint. Additionally, this session will go over best practices and how to take full advantage of what gRPC has to offer.
Content Security Policy (CSP) is a browser security mechanism against content injection. Using the CSP header, browsers can restrict content from just the domains whitelisted in the policy. This session shares lessons learned with deploying CSP at Yahoo.
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
NDC14에서 발표한 "[야생의 땅: 듀랑고] 서버 아키텍처" 세션의 슬라이드입니다.
슬라이드에 설명이 많지 않은데, 디스이즈게임에서 발표 내용을 잘 정리해주었습니다. 기사도 함께 보시면 좋을 것 같습니다.
http://www.thisisgame.com/webzine/news/nboard/4/?n=54955
You’re ready to make your applications more responsive, scalable, fast and secure. Then it’s time to get started with NGINX. In this webinar, you will learn how to install NGINX from a package or from source onto a Linux host. We’ll then look at some common operating system tunings you could make to ensure your NGINX install is ready for prime time.
View full webinar on demand at http://nginx.com/resources/webinars/installing-tuning-nginx/
Content Security Policy (CSP) is a browser security mechanism against content injection. Using the CSP header, browsers can restrict content from just the domains whitelisted in the policy. This session shares lessons learned with deploying CSP at Yahoo.
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
NDC14에서 발표한 "[야생의 땅: 듀랑고] 서버 아키텍처" 세션의 슬라이드입니다.
슬라이드에 설명이 많지 않은데, 디스이즈게임에서 발표 내용을 잘 정리해주었습니다. 기사도 함께 보시면 좋을 것 같습니다.
http://www.thisisgame.com/webzine/news/nboard/4/?n=54955
You’re ready to make your applications more responsive, scalable, fast and secure. Then it’s time to get started with NGINX. In this webinar, you will learn how to install NGINX from a package or from source onto a Linux host. We’ll then look at some common operating system tunings you could make to ensure your NGINX install is ready for prime time.
View full webinar on demand at http://nginx.com/resources/webinars/installing-tuning-nginx/
드랍박스, nDrive 등과 같은 클라우드 스토리지 서비스들은 데이터를 어떻게 저장하는지에 대한 이론적 내용과 실제 구현 내용을 살펴봅니다. 이 발표에서는 OpenStack 의 swift라는 Object Storage 를 이용하여 이론이 어떻게 구현되어있는지 알아봅니다.
9. 태초의 HTTP
• TCP 커넥션 수립 (3-way handshake)
• HTML 파일 1개 가져옴
• TCP 커넥션 닫음
• TCP 커넥션 수립 (3-way handshake)
• PNG 파일 1개 가져옴
• TCP 커넥션 닫음
20번 반복
14년 10월 21일 화요일
10. 태초의 HTTP
• TCP 커넥션 수립 (3-way handshake)
• HTML 파일 1개 가져옴
• TCP 커넥션 닫음
• TCP 커넥션 수립 (3-way handshake)
• PNG 파일 1개 가져옴
• TCP 커넥션 닫음
42 RTT
20번 반복
14년 10월 21일 화요일
11. HTTP/1.0+ (KEEP-ALIVE)
• TCP 커넥션 수립 (3-way handshake)
• HTML 파일 1개 가져옴
• PNG 파일 1개 가져옴 (20번 반복)
14년 10월 21일 화요일
12. HTTP/1.0+ (KEEP-ALIVE)
• TCP 커넥션 수립 (3-way handshake)
• HTML 파일 1개 가져옴
• PNG 파일 1개 가져옴 (20번 반복)
22 RTT
14년 10월 21일 화요일
13. PARALLEL CONNECTIONS
• TCP 커넥션 수립 (3-way handshake)
• HTML 파일 1개 가져옴
• TCP 커넥션 7개 더 수립 (3-way handshake)
• PNG 파일 8개 가져옴
• PNG 파일 8개 더 가져옴
• PNG 파일 4개 더 가져옴
14년 10월 21일 화요일
14. PARALLEL CONNECTIONS
• TCP 커넥션 수립 (3-way handshake)
• HTML 파일 1개 가져옴
• TCP 커넥션 7개 더 수립 (3-way handshake)
• PNG 파일 8개 가져옴
• PNG 파일 8개 더 가져옴
• PNG 파일 4개 더 가져옴
6 RTT
14년 10월 21일 화요일
15. PIPELINING
• TCP 커넥션 수립 (3-way handshake)
• HTML 파일 1개 가져옴
• PNG 파일 20개 가져옴
14년 10월 21일 화요일
16. PIPELINING
• TCP 커넥션 수립 (3-way handshake)
• HTML 파일 1개 가져옴
• PNG 파일 20개 가져옴
3 RTT
14년 10월 21일 화요일
17. PIPELINING
• TCP 커넥션 수립 (3-way handshake)
• HTML 파일 1개 가져옴
• PNG 파일 20개 가져옴
구현이 어려워서
잘 안씀!
14년 10월 21일 화요일
23. HEADER COMPRESSION
서버가 헤더 “date:Mon, 21 Oct 2013
20:13:21 GMT”를 클라이언트에게 전송
date:Mon, 21 Oct 2013 20:13:21 GMT C S
14년 10월 21일 화요일
24. HEADER COMPRESSION
서버가 헤더 “date:Mon, 21 Oct 2013
20:13:21 GMT”를 클라이언트에게 전송
C S
..date..z...T.D. .....f...-..
헤더값에 Huffman Coding
적용: 34 => 29
14년 10월 21일 화요일
25. HEADER COMPRESSION
서버가 헤더 “date:Mon, 21 Oct 2013
C 20:13:21 GMT”를 클라이언트에게 전송
S ..date..z...T.D. .....f...-..
Index Header Name Header Value
1 :authority
... ... ...
33 date
... ... ...
61 www-authenticate
Static Table
Index Header Name Header Value
Dynamic Table
14년 10월 21일 화요일
26. HEADER COMPRESSION
서버가 헤더 “date:Mon, 21 Oct 2013
C 20:13:21 GMT”를 클라이언트에게 전송
S ....z...T.D. .....f...-..
Index Header Name Header Value
1 :authority
... ... ...
33 date
... ... ...
61 www-authenticate
Static Table
Index Header Name Header Value
Dynamic Table
헤더 이름을 Static Table
인덱스로 대체: 29 => 24
14년 10월 21일 화요일
27. HEADER COMPRESSION
서버가 헤더 “date:Mon, 21 Oct 2013
C 20:13:21 GMT”를 클라이언트에게 전송
S ....z...T.D. .....f...-..
Index Header Name Header Value
1 :authority
... ... ...
33 date
... ... ...
61 www-authenticate
Static Table
Index Header Name Header Value
62 date
Mon, 21 Oct
2013 20:13:21
GMT
Dynamic Table
14년 10월 21일 화요일
28. HEADER COMPRESSION
서버가 헤더 “date:Mon, 21 Oct 2013
C 20:13:21 GMT”를 클라이언트에게 “또” 전송
S
Index Header Name Header Value
1 :authority
... ... ...
33 date
... ... ...
61 www-authenticate
Static Table
Index Header Name Header Value
62 date
Mon, 21 Oct
2013 20:13:21
GMT
Dynamic Table
14년 10월 21일 화요일
29. HEADER COMPRESSION
서버가 헤더 “date:Mon, 21 Oct 2013
C 20:13:21 GMT”를 클라이언트에게 “또” 전송
S
Index Header Name Header Value
1 :authority
... ... ...
33 date
... ... ...
61 www-authenticate
Static Table
Index Header Name Header Value
62 date
Mon, 21 Oct
2013 20:13:21
GMT
Dynamic Table
.
헤더 필드를 Dynamic Table
인덱스로 대체: 24 => 1
14년 10월 21일 화요일
32. MULTIPLEXED STREAMS
• HTTP/1.1
• TCP 커넥션 1개를 열고
• HTML 문서 1개를 요청해서 받음
• TCP 커넥션 7개를 더 열고
• PNG 파일 8개를 요청해서 받음
• PNG 파일 8개를 더 요청해서 받음
• PNG 파일 4개를 더 요청해서 받음
14년 10월 21일 화요일
33. MULTIPLEXED STREAMS
• HTTP/1.1
• TCP 커넥션 1개를 열고
• HTML 문서 1개를 요청해서 받음
• TCP 커넥션 7개를 더 열고
• PNG 파일 8개를 요청해서 받음
• PNG 파일 8개를 더 요청해서 받음
• PNG 파일 4개를 더 요청해서 받음
• HTTP/2
• TCP 커넥션 1개를 열고
• HTML 문서 1개를 요청해서 받음
• PNG 파일 20개를 요청해서 받음
14년 10월 21일 화요일
42. SERVER PUSH
• Server Push 안하면:
• TCP 커넥션 1개를 열고
• HTML 문서 1개를 요청해서 받음
• 그림 파일 2개를 요청해서 받음
14년 10월 21일 화요일
43. SERVER PUSH
• Server Push 안하면:
• TCP 커넥션 1개를 열고
• HTML 문서 1개를 요청해서 받음
• 그림 파일 2개를 요청해서 받음
• Server Push 하면:
• TCP 커넥션 1개를 열고
• HTML 문서 1개를 요청해서 그림
파일 2개와 함께 받음
14년 10월 21일 화요일
44. SERVER PUSH
C 1
S
1 1 1 1 2 1 2 4 1 4 1: PUSH_PROMISE (2: a.png)
1: PUSH_PROMISE (4: b.png)
1: a.html
2: a.png
4: b.png
1: GET /a.html
14년 10월 21일 화요일
45. SERVER PUSH
C 1
S
1 1 1 1 2 1 2 4 1 4 1: PUSH_PROMISE (2: a.png)
1: PUSH_PROMISE (4: b.png)
1: a.html
2: a.png
4: b.png
1: GET /a.html
a.png를 2번 스트림으로 보내줄
것이니 요청하지 말아라
14년 10월 21일 화요일
48. STREAM PRIORITY
• 의존성 지정 안하면:
• TCP 커넥션 1개를 열고
• HTML 문서 1개를 요청해서 받음
• CSS 문서 1개와 그림 파일 2개를
요청해서 받음
• CSS 문서가 늦게 와서 렌더링이
늦어짐
14년 10월 21일 화요일
49. STREAM PRIORITY
• 의존성 지정 안하면:
• TCP 커넥션 1개를 열고
• HTML 문서 1개를 요청해서 받음
• CSS 문서 1개와 그림 파일 2개를
요청해서 받음
• CSS 문서가 늦게 와서 렌더링이
늦어짐
• 의존성 지정하면:
• TCP 커넥션 1개를 열고
• HTML 문서 1개를 요청해서 받음
• CSS 문서 1개와 그림 파일 2개를
요청해서 받음. 그림 파일이 CSS
에 의존성이 있다고 알려줌.
• CSS 문서가 가장 먼저 순조롭게
렌더링
14년 10월 21일 화요일
50. STREAM PRIORITY
C 7 5 3
S
3 3 3 3 7 5 5 7 7 5 3: a.css
5: 1.png
7: 2.png
3: GET /a.css
5: GET /1.png (3에 의존)
7: GET /2.png (3에 의존)
14년 10월 21일 화요일
51. STREAM PRIORITY
C 7 5 3
S
3 3 3 3 7 5 5 7 7 5 3: a.css
5: 1.png
7: 2.png
3: GET /a.css
5: GET /1.png (3에 의존)
7: GET /2.png (3에 의존)
서버가 어떻게 줘야하는지에
대한 규칙은 전혀 없음
14년 10월 21일 화요일
53. HTTP/1에서 변하는 것
• HTTP 메시지 포맷
• HTTP 메시지 전송방법
• Connection 헤더 사라짐
• chunked 인코딩 사용 금지
14년 10월 21일 화요일
54. 변하지 않는 것
• “HTTP's existing semantics remain unchanged.”
• RFC 7231, 7232, 7233, 7234, 7235 그대로 사용함
14년 10월 21일 화요일
55. SPDY와 다른 점
헤더 압축
SPDY
HTTP/2
zlib
HPACK
14년 10월 21일 화요일
56. SPDY와 다른 점
헤더 압축
SPDY
HTTP/2
zlib
HPACK
CRIME
취약점
14년 10월 21일 화요일
57. 브라우저 지원
• IE 11 on Windows 8
• Firefox 34
• Chrome --enable-spdy4
14년 10월 21일 화요일
58. 현재 HTTP/2 진행상황
•Working Group Last Call (마무리 단계)
• 2015년 2월 RFC로 출판될 “예정”
14년 10월 21일 화요일
59. HTTP/2에 기여하려면
• HTTP/2 혹은 HPACK 초안을 읽고,
• ietf-http-wg@w3.org 로 의견을 보냅니다.
• 오타 수정 같은 것은 https://github.com/http2/http2-spec
로 PullRequest를 보내도 좋습니다.
14년 10월 21일 화요일