Π€ΠΎΠ½Π΄ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΠ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ» ΠΏΡΠΎΠ΅ΠΊΡ JShelter, ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΠΈΠΉ Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΠΎΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ ΡΠ³ΡΠΎΠ·, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ JavaScript Π½Π° ΡΠ°ΠΉΡΠ°Ρ , Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠΊΡΡΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΈ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅. ΠΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ GPLv3. ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½ΠΎ Π΄Π»Ρ Firefox, Google Chrome, Opera, Brave, Microsoft Edge ΠΈ Π΄ΡΡΠ³ΠΈΡ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄Π²ΠΈΠΆΠΊΠ° Chromium.
ΠΡΠΎΠ΅ΠΊΡ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Π°, ΡΠΈΠ½Π°Π½ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠΎΠ½Π΄ΠΎΠΌ NLnet Foundation. Π ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ JShelter Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ»ΡΡ ΠΠΆΠΎΡΠΆΠΈΠΎ ΠΠ°ΠΎΠ½Π΅ (Giorgio Maone), ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ NoScript, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° J++ ΠΈ Π°Π²ΡΠΎΡΡ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ JS-Shield ΠΈ JavaScript Restrictor. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ½ΠΎΠ²Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ JavaScript Restrictor.
JShelter ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ΠΌΠ΅ΠΆΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠΊΡΠ°Π½Π° Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² JavaScript, Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΠ°ΠΉΡΠ°ΠΌ ΠΈ web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ. ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅ΡΡΡΠ΅ ΡΡΠΎΠ²Π½Ρ Π·Π°ΡΠΈΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΠΆΠΈΠΌ Π³ΠΈΠ±ΠΊΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ API. ΠΡΠ»Π΅Π²ΠΎΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²ΡΠ΅ΠΌ API, ΠΏΠ΅ΡΠ²ΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π΅ Π½Π°ΡΡΡΠ°ΡΡΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΡΡΡΠ°Π½ΠΈΡ, Π²ΡΠΎΡΠΎΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π±Π°Π»Π°Π½ΡΠΈΡΡΠ΅Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΡ, Π° ΡΠ΅ΡΠ²ΡΡΡΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΡΠΎΠ³ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΠ½Π΅Π³ΠΎ.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ API ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°ΡΡ ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΡΠ°ΠΉΡΠ°ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΡΠ°ΠΉΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΠ»ΠΈΡΡ Π·Π°ΡΠΈΡΡ, Π° Π΄Π»Ρ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΠΎΡΠΎΡΠ½ΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ JavaScript, ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΌΠ΅Π½ΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ΄Π°Π²Π°ΡΡ Π»ΠΎΠΆΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ΅). ΠΡΠ΄Π΅Π»ΡΠ½ΠΎ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΆΠΈΠΌ NBS (Network boundary shield), ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΡΠ°ΡΠ·Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΎΠΊΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΡΠΌΠΈ (ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡΡΡ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ Π²ΡΠ΅ ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ).
ΠΠ»ΠΎΠΊΠΈΡΡΠ΅ΠΌΡΠ΅ ΠΈΠ»ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΠΌΡΠ΅ 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 — ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΈΠΊΡΠΎΠ°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΡ Π°ΡΠ°ΠΊ ΡΠΈΠΏΠ° Spectre.
- WebWorker (window.Worker), SharedArrayBuffer (window.SharedArrayBuffer) — ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π°ΡΠ°ΠΊ, ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡΠΈΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΡΠΈ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ Π΄Π°Π½Π½ΡΠΌ.
- Geolocation API (navigator.geolocation) — Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡΠΌ ΠΎ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ (Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΊΠ°ΠΆΠ°ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅).
- Gamepad API (navigator.getGamepads()) — ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΡΡΠΈΡΡΠ²Π°ΡΡΠΈΠΉ Π½Π°Π»ΠΈΡΠΈΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Π³Π΅ΠΉΠΌΠΏΠ°Π΄Π°.
- Virtual Reality API, Mixed Reality API — ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΡΡΡΠΎΠΉΡΡΠ² Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ.
- window.name — ΠΌΠ΅ΠΆΡΠ°ΠΉΡΠΎΠ²ΡΠ΅ ΡΡΠ΅ΡΠΊΠΈ.
- navigator.sendBeacon — ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ web-Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru