Google
- canvas.getContext() ๋ฉ์๋๋ก
์ถ๊ฐ ์ผ๋ฐ DOM ์ ๋ฐ์ดํธ ๋ฉ์ปค๋์ฆ์ ์ฐํํ๊ณ OpenGL์ ํตํด ์ง์ ์ถ๋ ฅํจ์ผ๋ก์จ ์ต์ํ์ ์ง์ฐ์ ์ ๊ณตํ๋ ๋์ฒด ๋ ๋๋ง ์์คํ ์ ์ฌ์ฉํ์ฌ Canvas ์ปจํ ์คํธ(2D ๋๋ WebGL)๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ "๋น๋๊ธฐํ" ํ๋๊ทธ - ํ์ฅ API
์น ๊ณต์ (๊ฐ์ฒด navigator.share) ์ด๋ฅผ ํตํด ๊ฐ๋ณ ๋ฒํผ ๋ชฉ๋ก ๋์ ๋ฐฉ๋ฌธ์์ ๊ด๋ จ๋ ์์ ๋คํธ์ํฌ์ ๊ฒ์ํ๊ธฐ ์ํ ํตํฉ ๋ฒํผ์ ์์ฑํ ์ ์์ต๋๋ค. API์ ์ ๋ฆด๋ฆฌ์ค์์์ถ๊ฐ ํ์ผ์ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์ ์กํ๊ธฐ ์ํ ์ผ๋ฐ์ ์ธ ๋ํ ์์๋ฅผ ํ์ํ๋ ๊ธฐ๋ฅ(์: Android์์๋ ๋ฉ์ผ, ๋ธ๋ฃจํฌ์ค ๋ฑ์ ํตํด ์ ์กํ๊ธฐ ์ํ ๋ธ๋ก์ด ํ์๋จ) -
๊ตฌํ ๋ฐ์ค ๋ฌธ์๋ก ๋์งํธ ๋ฆฌํฐ๋ด์ ์ซ์ ๊ทธ๋ฃน์ ๊ตฌ๋ถํ๋ ๊ธฐ๋ฅ. ์๋ฅผ ๋ค์ด ์ฝ๋์์ ํฐ ์ซ์์ ๊ฐ๋ ์ฑ์ ํฅ์์ํค๊ธฐ ์ํด 1_000_000_000์ ์ง์ ํ ์ ์์ผ๋ฉฐ ์ด ์ซ์๋ 1000000000์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. - ๋ชจ๋ ๋ฐ์คํฌํฑ ์ฌ์ฉ์์ ๋ํด ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋จ
์๊ฒฉํ ์ฌ์ดํธ ๊ฒฉ๋ฆฌ ๋ชจ๋ , ์๋ก ๋ค๋ฅธ ํธ์คํธ์ ํ์ด์ง๋ ํญ์ ์๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ์์ผ๋ฉฐ ๊ฐ ํ๋ก์ธ์ค๋ ์์ฒด ์๋๋ฐ์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์๊ฒฉํ ๊ฒฉ๋ฆฌ ๋ชจ๋์ ์ฃผ์ ๊ธฐ๋ฅ์ ํญ์ด ์๋ ๋๋ฉ์ธ์ผ๋ก ๊ตฌ๋ถํ๋ ๊ฒ์ ๋๋ค. ์ด์ ์ ๋ค๋ฅธ ๋๋ฉ์ธ์์ ๋ก๋๋ ์คํฌ๋ฆฝํธ, iframe ๋ฐ ํ์ ์ ์ฝํ ์ธ ๊ฐ ๊ธฐ๋ณธ ์ฌ์ดํธ์ ๋์ผํ ํ๋ก์ธ์ค์์ ์คํ๋์๋ค๋ฉด ์ด์ ์๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๋ถ๋ฆฌ๋ฉ๋๋ค. - ๋ธ๋๋ฆฌ์คํธ์ ์ถ๊ฐ๋ ์ ๋์จ์ ์ด์ ๋นํ์ฑํ๋์ง ์๊ณ ์์ ํ ์ ๊ฑฐ๋์ด ๋นํ์ฑ ๋ชจ๋๋ก ์ ํ๋ฉ๋๋ค.
- ๋ด์ฅ๋ Chrome ์์
๊ด๋ฆฌ์์์(์ค์ > ๋๊ตฌ ๋๋ณด๊ธฐ > ์์
๊ด๋ฆฌ์)
ํ๋ณด ์๋น์ค ์์ ์ ํ์ - "์ "window.open()" ์์ฑ์ ์ถ๊ฐํ์ต๋๋ค.
๋ฐฐ์ฌ์ ", Referer ํค๋๋ฅผ ์ฑ์ฐ์ง ์๊ณ ํ์ด์ง๋ฅผ ์ด ์ ์์ต๋๋ค. -
์ถ๊ฐ๋จ ์ง์์ดCSP (์ฝํ ์ธ ๋ณด์ ์ ์ฑ ) "script-src-attr", "script-src-elem", "style-src-attr" ๋ฐ "style-src-elem"์ ์คํฌ๋ฆฝํธ ๋ฐ ์คํ์ผ ์ง์๋ฌธ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง ๊ฐ๋ณ ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ, ์์ ๋๋ ํน์ฑ์ ์ ์ฉํ ์ ์์ต๋๋ค. - ์น ์ธ์ฆ API์์
์ถ๊ฐ ํ๋กํ ์ฝ์ ์ง์ํ๋ ํค๋ก ์์ ์ ์ธ์ฆํ๊ธฐ ์ํด ์ฌ์ฉ์ ์ ์ PIN์ ์ฌ์ฉํ๋ FIDO CTAP2 PIN ์ง์FIDO CTAP2 . ๊ตฌ์ฑ๊ธฐ์ "๊ณ ๊ธ" ์น์ ์ "๋ณด์ ํค ๊ด๋ฆฌ" ํญ๋ชฉ์ด ๋ํ๋ฉ๋๋ค. ์ด ํญ๋ชฉ์์ USB ๋๋ผ์ด๋ธ์ ์๋ ํค๋ฅผ ๋ณดํธํ๊ธฐ ์ํด PIN ์ฝ๋๋ฅผ ํ ๋นํ๊ณ ํค๋ฅผ ์ฌ์ค์ ํ๋ ์ต์ (๋ชจ๋ ์ง์ฐ๊ธฐ)์ ์ง์ ํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ ๋ฐ PIN); - Web Animations API์ ์ถ๊ฐ๋ ๊ฐ์ฒด
AnimationEffect ๋ฐ KeyframeEffect , ์ ๋๋ฉ์ด์ ์์ ๋ฐ ํ์ด๋ฐ(์ง์ ์๊ฐ, ์ง์ฐ)์ ๋ํ์์ผ๋ก ์ ์ดํ ์ ์์ต๋๋ค.
๋ํ ์๋ก์ด ์์ฑ์๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.์๊ธฐ() , ๋ณด๋ค ๊ด๋ฒ์ํ ์ ๋๋ฉ์ด์ ์ ์ด๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด์ ์๋ Web Animations API๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ ๊ตฌ์ฑ๋ Animation ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ Element.animate() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋๋ฉ์ด์ ์ ๋ง๋ค ์ ์์์ต๋๋ค. ์ด์ ๊ฐ๋ฐ์๋ ์๋ฅผ ๋ค์ด KeyframeEffect ๊ฐ์ฒด๋ฅผ ์ง์ ํ ์ ์๋ ๋ช ์์ ์์ฑ์ ํธ์ถ์ ํตํด ์์ฑ์ ์ ์ดํ ์ ์์ต๋๋ค. - ์ถ๊ฐ๋ ์ต์
HTMLVideoElement.playsInline ์์์ ์ฌ์ ์์ญ์ ๋น๋์ค๋ฅผ ํ์ํ๋๋ก ๋ธ๋ผ์ฐ์ ์ ์ง์ํ๋ A(์: ์ ์ฒด ํ๋ฉด ์ฌ์ ๋ฐฉ๋ฒ ์ ๊ณต) - MediaStreamTrack.getCapabilities() ๋ฉ์๋๋ ์ค๋์ค ์ฅ์น์ ๊ด๋ จ๋ ์์ฑ(์ํ๋ง ์๋, ์ง์ฐ, ์ฑ๋ ์ ๋ฑ)์ ์ ํจํ ๊ฐ ๋ฒ์๋ฅผ ๊ฐ์ ธ์ค๋ ๊ธฐ๋ฅ์ ๊ตฌํํฉ๋๋ค.
- WebRTC์ ์ถ๊ฐ๋ API
RTCDtls์ ์ก RTP ๋ฐ RTCP ํจํท์ด ์ก์์ ๋๋ SCTP ๋๋ DTLS(Datagram Transport Layer Security) ์ฌ์ฉ๊ณผ ๊ฐ์ ํ์ฑ ์ ์ก์ ๋ํ ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํด. ๋ํ ์ ์ก ์ํ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์ธํฐํ์ด์ค RTCIceTransport๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
RTCPeerConnection ๊ฐ์ฒด์์ ์ฌ์ฉ๋๋ ICE; - Cache-Control ํค๋๋ "
๋ถ์ค ์ฌ๊ฒ์ฆ ", ๋ธ๋ผ์ฐ์ ๊ฐ ๋น๋๊ธฐ ์ฌํ์ธ ์๊ฐ์ด ๋ง๋ฃ๋ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ ์ถ๊ฐ ์๊ฐ ์ฐฝ์ ์ค์ ํ ์ ์์ต๋๋ค. -
๋ฅ๋ ฅ ์ถ๊ฐ ๊ด์ฑ ์คํฌ๋กค ์ค์ ์์์ ๋ํ ๋ฐ์ธ๋ฉ์ ๊ฒฐ์ ํ๊ธฐ ์ํด Snap Stop ์คํฌ๋กค(์: ์ด๋ฏธ์ง ๋ชฉ๋ก์์ ์ ํํ ๋ ๋์ ์คํฌ๋กค ์ ์ค์ฒ๋ ๋ง์ง๋ง ์์๊ฐ ์๋๋ผ ๋ค์ ์์๋ฅผ ์ ํํ๊ฒ ๋จ) - Android ๋ฒ์ ์์ ์ธ์ฆ ์์์ ์๋ ์ฑ์ฐ๊ธฐ ๊ณ์ ๋งค๊ฐ๋ณ์์ ๋ํ ์ธํฐํ์ด์ค๊ฐ ๊ฐ์ ๋์์ต๋๋ค. ํดํ ๋ธ๋ก์ ์ด์ ์จ์คํฌ๋ฆฐ ํค๋ณด๋ ๋ฐ๋ก ์์ ํ์๋๋ฉฐ ํด๋ฆญํ๋ฉด ์ ๋ ฅ ์์์ ๊ฐ๋ฆฌ์ง ์๊ณ ์จ์คํฌ๋ฆฐ ํค๋ณด๋ ๋์ ๊ฐ๋ฅํ ์ ์ฅ๋ ์ต์ ์ ํ์ํฉ๋๋ค.
- ๋ฆฌ๋ ๋ชจ๋์ ๋ํ ์คํ์ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. ํ์ฑํ๋๋ฉด ์๋ฏธ ์๋ ํ ์คํธ๋ง ํ์๋๊ณ ๋ชจ๋ ๊ด๋ จ ์ปจํธ๋กค, ๋ฐฐ๋, ๋ฉ๋ด, ํ์ ๋ชจ์ ๋ฐ ํ์ด์ง์ ์ฝํ ์ธ ์ ๊ด๋ จ๋์ง ์์ ๊ธฐํ ๋ถ๋ถ์ด ์จ๊ฒจ์ง๋๋ค. ์ ๋ชจ๋์ ๋ํ ์ง์์ ํ์ฑํํ๋ ค๋ฉด chrome://flags/#enable-reader-mode ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋๋กญ๋ค์ด ๋ฉ๋ด์ ์ฌ์ฉ ํญ๋ชฉ์ด ๋ํ๋ฉ๋๋ค.
- V8 JavaScript ์์ง์ WebAssembly ์ปดํ์ผ ๊ฒฐ๊ณผ์ ๋ช
์์ ์บ์ฑ์ ๊ตฌํํฉ๋๋ค(ํ์ด์ง๊ฐ ๋ค์ ์ด๋ฆฌ๋ฉด ์ด์ ์ ์ฒ๋ฆฌ๋ WebAssembly ๊ตฌ์ฑ ์์๊ฐ ์บ์์์ ์์๋จ). ์์
WebAssembly๋ ๋ํ ๋ง์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ณต์ฌ, ์ฑ์ฐ๊ธฐ ๋ฐ ์ด๊ธฐํํ๊ธฐ ์ํ ์๋ก์ด memory.copy, memory.fill, table.copy, memory.init ๋ฐ table.init ๋ช ๋ น์ด๋ฅผ ์ถ๊ฐํ์ต๋๋ค. - ๊ธฐ๋ณธ Chrome ์ค๋ ๋๋ฅผ ํฌํจํ์ง ์๊ณ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ค์ด๋ก๋ํ ๋ ์ฆ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ง์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ธฐ ์ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. ์ด์ ์๋ ์ค๋ ๋๊ฐ ๊ธฐ๋ณธ ์ค๋ ๋์์ ์ฒ์ ์์ ๋์์ผ๋ฉฐ ์ฌ๊ธฐ์์ ํ์๋ก ๋ฆฌ๋๋ ์ ๋์์ต๋๋ค. ์ด ๋ฐฐ์ด์ ๋ฆฌ๋๋ ์ ์ด HTML ๊ตฌ๋ฌธ ๋ถ์ ๋ฐ ๋ค๋ฅธ JavaScript ์คํ๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ์ค๋ ๋์์ ์คํ๋๋ ๋ค๋ฅธ ์์ ์ ์ํด ์ฐจ๋จ๋ ์ ์์์ ์๋ฏธํ์ต๋๋ค. ์ด์ ์ด๋ฌํ ๋ฆฌ๋๋ ์ ์ด ํ์ง๋์์ต๋๋ค.
- ์น ๊ฐ๋ฐ์๋ฅผ ์ํ ๋๊ตฌ ๊ฐ์ ์ฌํญ:
- CSS ๊ฒ์ฌ ๋ชจ๋๋ CSS ์์ฑ์์ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ ์ด๋ฆ๊ณผ ๊ธฐ๋ณธ ๊ฐ(์: "filter: blur(1px)")์ ๋ํ ์๋ ์์ฑ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ ์๋ ๊ฐ์ ์ฌ์ฉ์๊ฐ ๋ณด๋ ํ์ด์ง ๋ ์ด์์์ ์ฆ์ ๋ฐ์๋ฉ๋๋ค.
- Ctrl+Shift+P๋ฅผ ๋๋ฅผ ๋ ํ์๋๋ ๋ช ๋ น ํจ๋์ ์๋น์ค ์์ ์, localStorage, sessionStorage, IndexedDB, Web์ ํฌํจํ์ฌ ํ์ด์ง์ ๊ด๋ จ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ง์ฐ๋ "Clear Site Data" ๋ช ๋ น์ ๊ตฌํํฉ๋๋ค(Application > Clear Storage ๋ฉ๋ด ํธ์ถ๊ณผ ์ ์ฌ). SQL, ์ฟ ํค, ์บ์ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์บ์
- ๋ชจ๋ ๊ธฐ์กด IndexedDB ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ณผ ์ ์๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ต๋๋ค(์ด์ ์๋ Application > IndexedDB์์ ํ์ฌ ๋๋ฉ์ธ์ ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ณผ ์ ์์์ง๋ง ์๋ฅผ ๋ค์ด iframe์ ํตํด ๋ก๋๋ ๋ธ๋ก์์ IndexedDB์ ์ฌ์ฉ์ ๊ฒ์ฌํ ์ ์์์ต๋๋ค).
- ๋คํธ์ํฌ ๊ฒ์ฌ ์ธํฐํ์ด์ค์์ "ํฌ๊ธฐ" ์ด์ ํ๋ ์๋ก ๋ง์ฐ์ค๋ฅผ ๊ฐ์ ธ๊ฐ ๋ ํ์
๋๋ ํดํ์ ์ด์ ๋ฆฌ์์ค ํฌ๊ธฐ๋ฅผ ์์ถํ์ง ์๊ณ ์๋ ํ์์ผ๋ก ํ์ํฉ๋๋ค.
- ๋๋ฒ๊ฑฐ ์ฌ์ด๋๋ฐ๋ ํ ์ค(์ธ๋ผ์ธ ์ค๋จ์ )์ ์๋ ๋ณต์กํ ์์ ๊ฐ๋ณ ๋ถ๋ถ๊ณผ ์ฐ๊ฒฐ๋ ์ค๋จ์ ์ํ์ ๋ํ ๋ณ๋์ ์ ๋ณด ์ถ๋ ฅ์ ์ ๊ณตํฉ๋๋ค(์: ๋ฉ์๋ ํธ์ถ ์ฒด์ธ์ ์ค์ ๋ ์ค๋จ์ ).
- IndexedDB ๋ฐ ์บ์ ๊ฒ์ฌ ํจ๋์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ์บ์์ ์ด ๋ฆฌ์์ค ์ ์นด์ดํฐ ํ์๊ฐ ๊ตฌํ๋ฉ๋๋ค.
- CSS ๊ฒ์ฌ ๋ชจ๋๋ CSS ์์ฑ์์ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ ์ด๋ฆ๊ณผ ๊ธฐ๋ณธ ๊ฐ(์: "filter: blur(1px)")์ ๋ํ ์๋ ์์ฑ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ ์๋ ๊ฐ์ ์ฌ์ฉ์๊ฐ ๋ณด๋ ํ์ด์ง ๋ ์ด์์์ ์ฆ์ ๋ฐ์๋ฉ๋๋ค.
- ์คํ์ ์ธ Canary ๋น๋๋ก
์ถ๊ฐ ์ง์
chrome://flags#dns-over-https์์ ํ์ฑํํ ์ ์๋ DNS over HTTPS(DoH, DNS over HTTPS)์ ๋ํ ์ก์ธ์ค. DoH๋ ๊ณต๊ธ์์ DNS ์๋ฒ๋ฅผ ํตํด ์์ฒญ๋ ํธ์คํธ ์ด๋ฆ์ ๋ํ ์ ๋ณด ์ ์ถ์ ๋ฐฉ์งํ๊ณ , MITM ๊ณต๊ฒฉ ๋ฐ DNS ํธ๋ํฝ ์คํธํ์ ๋ฐฉ์งํ๊ณ , DNS ์์ค์์ ์ฐจ๋จ์ ์ ํญํ๊ฑฐ๋, DNS ์๋ฒ์ ์ง์ ์ ์ํ ์ ์๋ ๊ฒฝ์ฐ ์์ ์ ๊ตฌ์ฑํ๋ ๋ฐ ์ ์ฉํ ์ ์์ต๋๋ค(์: ์๋ฅผ ๋ค์ด, ํ๋ก์๋ฅผ ํตํด ์์ ํ ๋)
ํ์ ๋ฐ ๋ฒ๊ทธ ์์ ์ธ์๋ ์ ๋ฒ์ ์ ๋ค์์ ์ ๊ฑฐํฉ๋๋ค.
์ถ์ฒ : opennet.ru