์˜คํ”ˆ ์†Œ์Šค ์žฌ๋‹จ์€ JavaScript API๋ฅผ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•ด JShelter ๋ธŒ๋ผ์šฐ์ € ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ž์œ  ์†Œํ”„ํŠธ์›จ์–ด ์žฌ๋‹จ(Free Software Foundation)์€ ์ˆจ๊ฒจ์ง„ ์‹๋ณ„, ์›€์ง์ž„ ์ถ”์ , ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ ์ถ•์  ๋“ฑ ์›น ์‚ฌ์ดํŠธ์—์„œ JavaScript๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์œ„ํ˜‘์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ๋ธŒ๋ผ์šฐ์ € ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๋Š” JShelter ํ”„๋กœ์ ํŠธ๋ฅผ ์†Œ๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋Š” GPLv3 ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ด ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์€ Firefox, Google Chrome, Opera, Brave, Microsoft Edge ๋ฐ Chromium ์—”์ง„ ๊ธฐ๋ฐ˜์˜ ๊ธฐํƒ€ ๋ธŒ๋ผ์šฐ์ €์šฉ์œผ๋กœ ์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ๋Š” NLnet ์žฌ๋‹จ์ด ์ž๊ธˆ์„ ์ง€์›ํ•˜๋Š” ๊ณต๋™ ๊ณ„ํš์œผ๋กœ ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. NoScript ์• ๋“œ์˜จ ์ž‘์„ฑ์ž์ธ Giorgio Maone, J++ ํ”„๋กœ์ ํŠธ ์ฐฝ๋ฆฝ์ž, JS-Shield ๋ฐ JavaScript Restrictor ์• ๋“œ์˜จ ์ž‘์„ฑ์ž๋„ JShelter ๊ฐœ๋ฐœ์— ์ฐธ์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. JavaScript Restrictor ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์€ ์ƒˆ ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ์ดˆ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

JShelter๋Š” ์›น์‚ฌ์ดํŠธ์™€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” JavaScript ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์œ„ํ•œ ์ผ์ข…์˜ ๋ฐฉํ™”๋ฒฝ์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์€ XNUMX๊ฐ€์ง€ ๋ณดํ˜ธ ์ˆ˜์ค€๊ณผ API ์•ก์„ธ์Šค๋ฅผ ์œ„ํ•œ ์œ ์—ฐํ•œ ๊ตฌ์„ฑ ๋ชจ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ ˆ๋ฒจ XNUMX์€ ๋ชจ๋“  API์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์™„์ „ํžˆ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ ˆ๋ฒจ์€ ํŽ˜์ด์ง€ ์ž‘๋™์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋Š” ์ตœ์†Œํ•œ์˜ ์ฐจ๋‹จ์„ ํฌํ•จํ•˜๊ณ , ๋‘ ๋ฒˆ์งธ ๋ ˆ๋ฒจ์€ ์ฐจ๋‹จ๊ณผ ํ˜ธํ™˜์„ฑ ์‚ฌ์ด์˜ ๊ท ํ˜•์„ ์ด๋ฃจ๊ณ , ๋„ค ๋ฒˆ์งธ ๋ ˆ๋ฒจ์€ ๋ถˆํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์—„๊ฒฉํ•˜๊ฒŒ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.

API ์ฐจ๋‹จ ์„ค์ •์€ ๊ฐœ๋ณ„ ์‚ฌ์ดํŠธ์— ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ผ๋ถ€ ์‚ฌ์ดํŠธ์—์„œ๋Š” ๋ณดํ˜ธ๊ฐ€ ๊ฐ•ํ™”๋˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ์—์„œ๋Š” ๋น„ํ™œ์„ฑํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํŠน์ • JavaScript ๋ฉ”์„œ๋“œ, ๊ฐœ์ฒด, ์†์„ฑ ๋ฐ ํ•จ์ˆ˜๋ฅผ ์„ ํƒ์ ์œผ๋กœ ์ฐจ๋‹จํ•˜๊ฑฐ๋‚˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ž˜๋ชป๋œ ์ •๋ณด ์ƒ์„ฑ). ๋ณ„๋„์˜ ๊ธฐ๋Šฅ์€ ํŽ˜์ด์ง€๊ฐ€ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ์™€ ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ ๊ฐ„์˜ ํ”„๋ก์‹œ๋กœ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” NBS(๋„คํŠธ์›Œํฌ ๊ฒฝ๊ณ„ ๋ณดํ˜ธ) ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค(๋ชจ๋“  ๋‚˜๊ฐ€๋Š” ์š”์ฒญ์„ ๊ฐ€๋กœ์ฑ„์„œ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค).

์ฐจ๋‹จ๋˜๊ฑฐ๋‚˜ ์ œํ•œ๋œ API:

  • window.Date, window.performance.now(), window.PerformanceEntry, Event.prototype.timeStamp, Gamepad.prototype.timestamp ๋ฐ VRFrameData.prototype.timestamp - ์ •ํ™•ํ•œ ์‹œ๊ฐ„ ์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€์ฑ„๋„ ๊ณต๊ฒฉ์„ ์‹๋ณ„ํ•˜๊ณ  ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .
  • HTMLCanvasElement(canvas.toDataURL(), canvas.toBlob(), CanvasRenderingContext2D.getImageData, OffscreenCanvas.convertToBlob()) - ์‚ฌ์šฉ์ž๋ฅผ ์‹๋ณ„ํ•  ๋•Œ ๊ทธ๋ž˜ํ”ฝ ํ•˜์œ„ ์‹œ์Šคํ…œ์˜ ๊ธฐ๋Šฅ์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • AudioBuffer ๋ฐ AnalyserNode(AudioBuffer.getChannelData(), AudioBuffer.copyFromChannel(), AnalyserNode.getByteTimeDomainData(), AnalyserNode.getFloatTimeDomainData(), AnalyserNode.getByteFrequencyData() ๋ฐ AnalyserNode.getFloatFrequencyData()) - ์˜ค๋””์˜ค ์‹ ํ˜ธ ๋ถ„์„์„ ํ†ตํ•œ ์‹๋ณ„.
  • WebGLRenderingContext - ๊ทธ๋ž˜ํ”ฝ ์Šคํƒ ๋ฐ GPU์˜ ๊ธฐ๋Šฅ ๋ถ„์„์„ ํ†ตํ•ด ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.
  • MediaDevices.prototype.enumerateDevices - ์นด๋ฉ”๋ผ์™€ ๋งˆ์ดํฌ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ด๋ฆ„์„ ํš๋“ํ•˜์—ฌ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.
  • navigator.deviceMemory, navigator.hardwareConcurrency - ํ•˜๋“œ์›จ์–ด์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.
  • XMLHttpRequest(XHR) - ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋œ ํ›„ ์ˆ˜์ง‘๋œ ์‹œ์Šคํ…œ ์ •๋ณด๋ฅผ ์™ธ๋ถ€ ์„œ๋ฒ„๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  • ArrayBuffer - ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜ ์ŠคํŽ™ํ„ฐ ๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • WebWorker(window.Worker), SharedArrayBuffer(window.SharedArrayBuffer) - ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•  ๋•Œ ์ง€์—ฐ์„ ํ‰๊ฐ€ํ•˜๋Š” ๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • Geolocation API(navigator.geolocation) - ์œ„์น˜ ์ •๋ณด์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค(์ถ”๊ฐ€ํ•˜๋ฉด ๋ฐ˜ํ™˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์™œ๊ณกํ•  ์ˆ˜ ์žˆ์Œ).
  • ๊ฒŒ์ž„ํŒจ๋“œ API(navigator.getGamepads())๋Š” ์‹œ์Šคํ…œ์— ๊ฒŒ์ž„ํŒจ๋“œ๊ฐ€ ์žˆ๋Š”์ง€๋ฅผ ๊ณ ๋ คํ•˜๋Š” ์‹๋ณ„ ๊ธฐํ˜ธ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
  • ๊ฐ€์ƒ ํ˜„์‹ค API, ํ˜ผํ•ฉ ํ˜„์‹ค API - ์‹๋ณ„์„ ์œ„ํ•ด ๊ฐ€์ƒ ํ˜„์‹ค ์žฅ์น˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • window.name - ์‚ฌ์ดํŠธ ๊ฐ„ ๋ˆ„์ˆ˜.
  • navigator.sendBeacon - ์›น ๋ถ„์„์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€