Π‘ΠΎΡΡΠΎΡΠ»ΡΡ ΡΠ΅Π»ΠΈΠ· web-Π±ΡΠ°ΡΠ·Π΅ΡΠ° Firefox 148 ΠΈ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ»ΡΡ Π²Π΅ΡΠΎΠΊ Ρ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΡΠΎΠΊΠΎΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ β 140.8.0 ΠΈ 115.33.0 (ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π² ΡΠ΅ΡΠΈΠΈ 115.x). Π Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠ΅ ΡΠ°ΡΡ Π½Π° ΡΡΠ°Π΄ΠΈΡ Π±Π΅ΡΠ°-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Π° Π²Π΅ΡΠΊΠ° Firefox 149, ΡΠ΅Π»ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°ΠΌΠ΅ΡΠ΅Π½ Π½Π° 24 ΠΌΠ°ΡΡΠ°.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π½ΠΎΠ²ΡΠ΅ΡΡΠ²Π° Π² Firefox 148 (1, 2, 3):
- Π Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠ°Π½Π΅Π΅ ΠΎΠ±Π΅ΡΠ°Π½Π½Π°Ρ ΡΠ΅ΠΊΡΠΈΡ Β«AI ControlsΒ» Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ AI. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·ΠΎΠΌ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ AI ΠΈΠ»ΠΈ Π²ΡΠ±ΠΎΡΠΎΡΠ½ΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ. ΠΠ»Ρ Π²ΡΠ±ΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠ°ΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π·Π°Π²ΡΠ·Π°Π½Π½ΡΠ΅ Π½Π° AI, ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΡΠ·ΡΠΊ, ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡ
ΠΈ Π² ΠΎΡΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
PDF-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°Ρ
, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΈ ΠΌΠ΅ΡΠΊΠΈ ΠΏΡΠΈ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ΅ Π²ΠΊΠ»Π°Π΄ΠΎΠΊ, Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΡΠ°ΡΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΡΠΈ ΠΏΡΠ΅Π΄ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ ΡΡΡΠ»ΠΎΠΊ ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ°ΡΠ±ΠΎΡΠ°ΠΌ. ΠΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Π°, Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°Π½Π° ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π°. ΠΡΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡΠ΅ AI-ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠ΄Π°Π»ΡΡΡΡΡ, Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΠΊΡΡΠ²Π°ΡΡΡΡ.

- Π Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΠΎΠΏΡΠΈΡ Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π²Π½Π΅ΠΏΠ»Π°Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π»ΠΈΠ·Π°ΠΌΠΈ. Π Π°Π½Π΅Π΅ Π΄Π°Π½Π½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π»Π°ΡΡ ΠΊ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅Π»Π΅ΠΌΠ΅ΡΡΠΈΠΈ ΠΈ ΡΡΠ°ΡΡΠΈΡ Π² ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ (Privacy & SecurityΒ» > Β«Firfox Data collectionΒ» > Β«Install and run studiesΒ»), Π½ΠΎ Π½Π°ΡΠΈΠ½Π°Ρ Ρ Firefox 148 ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π½ΠΈΡ
.

- Π€ΠΎΠ½ΠΎΠ²ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π²ΡΠ±ΡΠ°Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΈΡΡ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ, ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊΠ°ΠΊ Π΄Π»Ρ Π½ΠΎΠ²ΡΡ Π²ΠΊΠ»Π°Π΄ΠΎΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ Π½ΠΎΠ²ΡΡ Π²ΠΊΠ»Π°Π΄ΠΎΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ².
- ΠΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Windows 10 ΠΈ 11 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡ Firefox Backup, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΠ΅ ΠΊΠΎΠΏΠΈΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ Π΄Π°Π½Π½ΡΡ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Π·Π°ΠΊΠ»Π°Π΄ΠΊΠΈ, Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ. Π ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΡ Π½Π΅ Π²ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅, Π²ΡΠ±ΡΠ°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π΄Π»Ρ ΠΎΡΠΈΡΡΠΊΠΈ ΠΏΡΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ°. Π‘ΠΎΠ·Π΄Π°Π½Π½ΡΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ Π½Π° Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅.
- ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° web-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Β«about:blankΒ», ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ ΠΈ ΠΏΡΠΈ Π½Π°ΡΠ°Π»Π΅ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π²ΡΠΎΡΡΠΌ ΠΏΡΡΡΡΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠΌ, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΠΌ ΠΏΠ°ΡΡΠ΅ΡΠΎΠΌ (ΠΈΠ·-Π·Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π³ΠΎΠ½ΠΊΠΈ, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ²ΡΠ΅Π΅ ΠΊ ΠΏΠΎΡΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ ΡΠ΅ΡΠ΅Π· JavaScript ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° window.open()).
- Π ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Service worker Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° API WebGPU, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ WebGPU Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠ±ΡΠΈΡ ΡΠ°Π±ΠΎΡ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ Π²ΠΊΠ»Π°Π΄ΠΎΠΊ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ°.
- Π JavaScript Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ Iterator.zip() ΠΈ Iterator.zipKeyed() Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ². ΠΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π² ΡΠΎΠΉ ΠΆΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ. const str1 = Β«abcΒ»; const str2 = Β«1234Β»; const it = Iterator.zip([Iterator.from(str1), Iterator.from(str2)]); for (const [char1, char2] of it) { console.log(`${char1} β ${char2}`); } // ΠΡΠ²Π΅Π΄Π΅Ρ: // a β 1 // b β 2 // c β 3 const table = { name: [Β«CarolineΒ», Β«DanielleΒ», Β«EvelynΒ»], age: [30, 25, 35], city: [Β«New YorkΒ», Β«LondonΒ», Β«Hong KongΒ»], }; for (const { name, age, city } of Iterator.zipKeyed(table)) { console.log(`${name}, aged ${age}, lives in ${city}.`); } // ΠΡΠ²Π΅Π΄Π΅Ρ: // Caroline, aged 30, lives in New York. // Danielle, aged 25, lives in London. // Evelyn, aged 35, lives in Hong Kong.
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ API Trusted Types, ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΠΌΡΠΉ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΉ Ρ DOM, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΡ ΠΊ ΠΌΠ΅ΠΆΡΠ°ΠΉΡΠΎΠ²ΠΎΠΌΡ ΡΠΊΡΠΈΠΏΡΠΈΠ½Π³Ρ (DOM XSS). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π°Π½Π½ΡΡ Π² Π±Π»ΠΎΠΊΠ°Ρ eval() ΠΈΠ»ΠΈ Π²ΡΡΠ°Π²ΠΊΠ°Ρ Β«.innerHTMLΒ» ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ JavaScript-ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ. Trusted Types ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² TrustedHTML Π²ΠΌΠ΅ΡΡΠΎ Π³ΠΎΠ»ΡΡ ΡΡΠΎΠΊ Π² ΠΎΠΏΠ°ΡΠ½ΡΡ Π²ΡΠ·ΠΎΠ²Π°Ρ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ element.innerHTML, document.write() ΠΈ setTimeout(). Π ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ TrustedHTML ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΠΈΠΌΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΈ ΡΠΈΡΡΠΊΡ Π΄Π°Π½Π½ΡΡ .
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ API Sanitizer, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ HTML ΠΈ Π²ΡΡΠ΅Π·Π°Π½ΠΈΡ ΠΈΠ· ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ HTML-ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π²Π»ΠΈΡΡΡΠΈΡ Π½Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. ΠΠ»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ Π²ΡΡΠ°Π²ΠΊΠΈ HTML-ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΌΠ΅ΡΠΎΠ΄ element.setHTML(), ΠΏΠΎΡ ΠΎΠΆΠΈΠΉ Π½Π° element.innerHTML, Π½ΠΎ Π·Π°ΡΠΈΡΠ°ΡΡΠΈΠΉ ΠΎΡ ΠΌΠ΅ΠΆΡΠ°ΠΉΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡΠΈΠ½Π³Π° (XSS). ΠΠ»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π±ΠΎΡΠ° HTML ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΌΠ΅ΡΠΎΠ΄ document.parseHTML(). API ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ ΡΠΈΡΡΠΊΠΈ ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠΈΡ ΠΈΠ·Π²Π½Π΅ Π΄Π°Π½Π½ΡΡ ΠΈ Π²ΡΡΠ΅Π·Π°Π½ΠΈΡ ΠΈΠ· Π½ΠΈΡ HTML-ΡΠ΅Π³ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΠΈΡ XSS-Π°ΡΠ°ΠΊ. const unsanitizedString = Β«abc <script>alert(1)<Β» + Β«/script> defΒ»; const sanitizer1 = new Sanitizer({ elements: [Β«divΒ», Β«pΒ», Β«buttonΒ», Β«scriptΒ»], }); const target = document.getElementById(Β«targetΒ»); target.setHTML(unsanitizedString, { sanitizer: sanitizer1 });
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ²ΠΎΠΉΡΡΠ²Π° Β«location.ancestorOriginsΒ», ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΡΠΏΠΈΡΠΎΠΊ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² (origin) Π²ΡΠ΅Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Location. ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π΄Π°Π½Π½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΡΠ΅ΡΠ΅Π· iframe Π½Π° Π΄ΡΡΠ³ΠΎΠΌ ΡΠ°ΠΉΡΠ΅.
- Π API Navigation Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΎΠ±ΡΠ΅ΠΊΡ NavigationPrecommitController Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ addHandler(), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΡΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠΈΠΉ ΠΏΡΠΈ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ Π½Π° ΡΡΠ°Π΄ΠΈΠΈ Β«post-commitΒ», ΠΊΠΎΠ³Π΄Π° Π½ΠΎΠ²ΡΠΉ URL ΡΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π² Π°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ CSS-ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ position-try-order, Π·Π°Π΄Π°ΡΡΠ΅Π΅ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π²ΡΠ±ΠΎΡΠ° Π·Π°ΠΏΠ°ΡΠ½ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ΡΠΊΠΎΡΠ½ΡΠΌ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅. Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ Π²Ρ ΠΎΠ΄ΠΈΡ Π² Π½Π°Π±ΠΎΡ CSS Anchor Positioning, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΠΎΠΊΠ°Π·ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΊ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ JavaScript, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠΈΡ ΠΎΠΊΠΎΠ½ (popover), ΠΏΠΎΡΠ²Π»ΡΡΡΠΈΡ ΡΡ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ ΡΠΎ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠΈΠΌΠΈ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°ΠΌΠΈ.
- Π CSS Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡ shape(), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠ³ΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ CSS-ΡΠ²ΠΎΠΉΡΡΠ² clip-path ΠΈ offset-path. Π€ΡΠ½ΠΊΡΠΈΡ shape() ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠ³ΡΡ, ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ path(), Π½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π½ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ CSS.
- Π Π²Π΅ΡΡΠΈΠΈ Firefox Π΄Π»Ρ Android ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠ»ΡΡΡΠ΅Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΠΏΡΠΈΡ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° ΡΡΡΠ»ΠΊΠΈ Π±Π΅Π· ΠΎΡΠΊΡΡΡΠΈΡ ΡΡΡΠ°Π½ΠΈΡΡ.
ΠΡΠΎΠΌΠ΅ Π½ΠΎΠ²ΡΠ΅ΡΡΠ² ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π² Firefox 148 ΡΡΡΡΠ°Π½Π΅Π½ΠΎ 60 ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ (Π² 6 ΡΠ°Π· Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π² ΠΏΡΠΎΡΠ»ΠΎΠΌ Π²ΡΠΏΡΡΠΊΠ΅). 48 ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ Π²ΡΠ·Π²Π°Π½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ°ΠΌΡΡΡΡ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΡΠ΅ΡΠΎΠ² ΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠΆΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄ΡΠ½Π½ΡΠΌ ΠΎΠ±Π»Π°ΡΡΡΠΌ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π½Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠ° ΠΏΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΡΠΎΡΠΌΠ»Π΅Π½Π½ΡΡ
ΡΡΡΠ°Π½ΠΈΡ. 5 ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠ±ΠΎΠΉΡΠΈ sandbox-ΠΈΠ·ΠΎΠ»ΡΡΠΈΡ ΠΈΠ·-Π·Π° Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π³ΡΠ°Π½ΠΈΡ ΠΈ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru



