αž˜αžΌαž›αž“αž·αž’αž·αž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž αž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž“αŸ’αžαŸ‚αž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€ JShelter αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹ JavaScript API

αž˜αžΌαž›αž“αž·αž’αž·αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž₯αžαž‚αž·αžαžαŸ’αž›αŸƒαž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αž‚αž˜αŸ’αžšαŸ„αž„ JShelter αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž“αŸ’αžαŸ‚αž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αžŠαžΎαž˜αŸ’αž”αžΈαž€αžΆαžšαž–αžΆαžšαž”αŸ’αžšαž†αžΆαŸ†αž„αž“αžΉαž„αž€αžΆαžšαž‚αŸ†αžšαžΆαž˜αž€αŸ†αž αŸ‚αž„αžŠαŸ‚αž›αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž–αŸαž›αž”αŸ’αžšαžΎ JavaScript αž“αŸ…αž›αžΎαž‚αŸαž αž‘αŸ†αž–αŸαžš αžšαž½αž˜αž‘αžΆαŸ†αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž›αžΆαž€αŸ‹ αž€αžΆαžšαžαžΆαž˜αžŠαžΆαž“αž…αž›αž“αžΆ αž“αž·αž„αž€αžΆαžšαž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αž‘αž·αž“αŸ’αž“αž“αŸαž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ” αž›αŸαžαž€αžΌαžŠαž‚αž˜αŸ’αžšαŸ„αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸ‚αž€αž…αžΆαž™αž€αŸ’αžšαŸ„αž˜αž’αžΆαž‡αŸ’αž‰αžΆαž”αŸαžŽαŸ’αžŽ GPLv3 αŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž“αŸ’αžαŸ‚αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαŸ€αž”αž…αŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Firefox, Google Chrome, Opera, Brave, Microsoft Edge αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ Chromium αŸ”

αž‚αž˜αŸ’αžšαŸ„αž„β€‹αž“αŸαŸ‡β€‹αž€αŸ†αž–αž»αž„β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αž‘αžΎαž„β€‹αž‡αžΆβ€‹αž‚αŸ†αž“αž·αžβ€‹αž•αŸ’αžαž½αž…β€‹αž•αŸ’αžαžΎαž˜β€‹αžšαž½αž˜β€‹αžŠαŸ‚αž›β€‹αž•αŸ’αžαž›αŸ‹β€‹αž˜αžΌαž›αž“αž·αž’αž·β€‹αžŠαŸ„αž™ NLnet FoundationαŸ” Giorgio Maone αžŠαŸ‚αž›αž‡αžΆαž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž“αŸ’αžαŸ‚αž˜ NoScript αž€αŸαžŠαžΌαž…αž‡αžΆαžŸαŸ’αžαžΆαž”αž“αž·αž€αž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„ J++ αž“αž·αž„αž‡αžΆαž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž“αŸ’αžαŸ‚αž˜ JS-Shield αž“αž·αž„ JavaScript Restrictor αž€αŸαž”αžΆαž“αž…αžΌαž›αžšαž½αž˜αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ JShelter αž•αž„αžŠαŸ‚αžšαŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž“αŸ’αžαŸ‚αž˜ JavaScript Restrictor αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αž˜αŸ’αžšαŸ„αž„αžαŸ’αž˜αžΈαŸ”

JShelter αž’αžΆαž…β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž‚αŸβ€‹αž‚αž·αžβ€‹αžαžΆβ€‹αž‡αžΆβ€‹αž”αŸ’αžšαž—αŸαž‘β€‹αž‡αž‰αŸ’αž‡αžΆαŸ†αž„β€‹αž—αŸ’αž›αžΎαž„β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž…αŸ†αžŽαž»αž…β€‹αž”αŸ’αžšαž‘αžΆαž€αŸ‹β€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ JavaScript αžŠαŸ‚αž›β€‹αž˜αžΆαž“β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž‚αŸαž αž‘αŸ†αž–αŸαžš αž“αž·αž„β€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹αž”αžŽαŸ’αžŠαžΆαž‰αŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž“αŸ’αžαŸ‚αž˜αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαž€αžΆαžšαž–αžΆαžšαž”αž½αž“αž€αž˜αŸ’αžšαž·αž αž€αŸαžŠαžΌαž…αž‡αžΆαžšαž”αŸ€αž”αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž’αžΆαž…αž”αžαŸ‹αž”αŸ‚αž“αž”αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎ API αŸ” αž€αž˜αŸ’αžšαž·αžαžŸαžΌαž“αŸ’αž™αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž…αžΌαž›αž”αŸ’αžšαžΎ APIs αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž”αžΆαž“αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„ αž‘αžΈαž˜αž½αž™αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž€αžΆαžšαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αžαž·αž…αžαž½αž…αž”αŸ†αž•αž»αžαžŠαŸ‚αž›αž˜αž·αž“αžšαŸ†αžαžΆαž“αžŠαž›αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸƒαž‘αŸ†αž–αŸαžš αž€αž˜αŸ’αžšαž·αžαž‘αžΈαž–αžΈαžšαžαž»αž›αŸ’αž™αž—αžΆαž–αžšαžœαžΆαž„αž€αžΆαžšαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹ αž“αž·αž„αž—αžΆαž–αž†αž”αž‚αŸ’αž“αžΆ αž αžΎαž™αž€αž˜αŸ’αžšαž·αžαž‘αžΈ XNUMX αžšαž½αž˜αž˜αžΆαž“αž€αžΆαžšαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αž™αŸ‰αžΆαž„αžαžΉαž„αžšαžΉαž„αž“αžΌαžœαž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αŸ”

αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž€αžΆαžšαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹ API αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž„αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž“αžΉαž„αž‚αŸαž αž‘αŸ†αž–αŸαžšαž“αžΈαž˜αž½αž™αŸ— αž§αž‘αžΆαž αžšαžŽαŸ αž€αžΆαžšαž€αžΆαžšαž–αžΆαžšαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž„αŸ’αžšαžΉαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸαž αž‘αŸ†αž–αŸαžšαž˜αž½αž™αž…αŸ†αž“αž½αž“ αž“αž·αž„αž”αž·αž‘αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸαž αž‘αŸ†αž–αŸαžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αž’αŸ’αž“αž€αž€αŸαž’αžΆαž…αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž”αž·αž‘αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš JavaScript αžœαžαŸ’αžαž» αž›αž€αŸ’αžαžŽαžŸαž˜αŸ’αž”αžαŸ’αžαž· αž“αž·αž„αž˜αž»αžαž„αžΆαžšαž˜αž½αž™αž…αŸ†αž“αž½αž“ αž¬αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαž˜αŸ’αž›αŸƒαžαŸ’αžšαž‘αž”αŸ‹ (αž§αž‘αžΆαž αžšαžŽαŸ αž”αž„αŸ’αž€αžΎαžαž–αŸαžαŸŒαž˜αžΆαž“αž˜αž·αž“αž–αž·αžαž’αŸ†αž–αžΈαž”αŸ’αžšαž–αŸαž“αŸ’αž’)αŸ” αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž˜αž½αž™αž‚αžΊαžšαž”αŸ€αž” NBS (Network boundary Shield) αžŠαŸ‚αž›αž˜αž·αž“αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž‘αŸ†αž–αŸαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αžαžΆαž˜αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαž‡αžΆαž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈαžšαžœαžΆαž„αž”αžŽαŸ’αžαžΆαž‰αžαžΆαž„αž€αŸ’αžšαŸ… αž“αž·αž„αž”αžŽαŸ’αžαžΆαž‰αž€αŸ’αž“αž»αž„αžŸαŸ’αžšαž»αž€ (αžŸαŸ†αžŽαžΎαžŠαŸ‚αž›αž…αŸαž‰αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αž‘αžΆαž€αŸ‹αž…αžΆαž”αŸ‹ αž“αž·αž„αžœαž·αž—αžΆαž‚)αŸ”

APIs αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹ αž¬αžŠαžΆαž€αŸ‹αž€αž˜αŸ’αžšαž·αžαŸ–

  • 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.getBytimedomaindata (), analySernode.getfloatTimedoma Indata (), analysernode.getbytefrequencydata () αž“αž·αž„ analysernode.getBytimedomaindata () αž€αžΆαžšαžœαž·αž—αžΆαž‚αžαžΆαž˜αžšαž›αž€αžŸαž‰αŸ’αž‰αžΆαŸ”
  • WebGLRenderingContext - αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαžαžΆαž˜αžšαž™αŸˆαž€αžΆαžšαžœαž·αž—αžΆαž‚αž“αŸƒαž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž“αŸƒαž‡αž„αŸ‹αž€αŸ’αžšαžΆαž αŸ’αžœαž·αž€ αž“αž·αž„ GPU αŸ”
  • MediaDevices.prototype.enumerateDevices - αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαžŠαŸ„αž™αž€αžΆαžšαž‘αž‘αž½αž›αž”αžΆαž“αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš αž“αž·αž„αžˆαŸ’αž˜αŸ„αŸ‡αžšαž”αžŸαŸ‹αž€αžΆαž˜αŸαžšαŸ‰αžΆ αž“αž·αž„αž˜αžΈαž€αŸ’αžšαžΌαž αŸ’αžœαžΌαž“αŸ”
  • navigator.deviceMemory, navigator.hardwareConcurrency - αž€αžΆαžšαž‘αž‘αž½αž›αž”αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αŸ”
  • XMLHttpRequest (XHR) - αž•αŸ’αž‘αŸαžšαž–αŸαžαŸŒαž˜αžΆαž“αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ’αžšαž˜αžΌαž›αž‘αŸ…αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžαžΆαž„αž€αŸ’αžšαŸ…αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž‘αŸ†αž–αŸαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‘αž»αž€αŸ”
  • ArrayBuffer - αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαžαžΆαž˜αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜αžαŸ’αž“αžΆαžαžαžΌαž…αŸ”
  • WebWorker (window.Worker), SharedArrayBuffer (window.SharedArrayBuffer) - αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαžŠαŸ‚αž›αžœαžΆαž™αžαž˜αŸ’αž›αŸƒαž€αžΆαžšαž–αž“αŸ’αž™αžΆαžšαž–αŸαž›αž“αŸ…αž–αŸαž›αž…αžΌαž›αž”αŸ’αžšαžΎαž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ”
  • Geolocation API (navigator.geolocation) - αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž–αŸαžαŸŒαž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„ (αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αž„αŸ’αžαžΌαž…αž‘αŸ’αžšαž„αŸ‹αž‘αŸ’αžšαžΆαž™αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αžαŸ’αžšαž‘αž”αŸ‹αž˜αž€αžœαž·αž‰) αŸ”
  • Gamepad API (navigator.getGamepads()) αž‚αžΊαž‡αžΆαžŸαž‰αŸ’αž‰αžΆαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž˜αž½αž™αžŠαŸ‚αž›αž‚αž·αžαž‚αžΌαžšαž’αŸ†αž–αžΈαžœαžαŸ’αžαž˜αžΆαž“αžšαž”αžŸαŸ‹ gamepad αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ”
  • Virtual Reality API, Mixed Reality API - αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž§αž”αž€αžšαžŽαŸαž€αžΆαžšαž–αž·αžαž“αž·αž˜αŸ’αž˜αž·αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαŸ”
  • window.name - αž€αžΆαžšαž›αŸαž…αž’αŸ’αž›αžΆαž™αž†αŸ’αž›αž„αž‚αŸαž αž‘αŸ†αž–αŸαžšαŸ”
  • navigator.sendBeacon - αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžœαž·αž—αžΆαž‚αž‚αŸαž αž‘αŸ†αž–αŸαžšαŸ”

αž”αŸ’αžšαž—αž–: opennet.ru

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹