Π‘ΡΡΡΠΎΡ ΡΠ΅ ΠΈΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π± Π±ΡΠ°ΡΠ·ΡΡΠ° 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, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈ ΠΊΠΎΠΏΠΈΡ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅, ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½ΠΈ ΠΎΡ Π±ΡΠ°ΡΠ·ΡΡΠ°, ΠΊΠ°ΡΠΎ ΠΎΡΠΌΠ΅ΡΠΊΠΈ, Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ. Π ΡΠ΅Π·Π΅ΡΠ²Π½Π°ΡΠ° ΠΊΠΎΠΏΠΈΡ Π½Π΅ ΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π°Ρ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ Π΅ ΠΈΠ·Π±ΡΠ°Π» Π΄Π° ΠΈΠ·ΡΡΠΈΠ΅ ΠΏΡΠΈ Π·Π°ΡΠ²Π°ΡΡΠ½Π΅ Π½Π° Π±ΡΠ°ΡΠ·ΡΡΠ°. Π‘ΡΠ·Π΄Π°Π΄Π΅Π½Π°ΡΠ° ΡΠ΅Π·Π΅ΡΠ²Π½Π° ΠΊΠΎΠΏΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π·Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ ΡΠ»Π΅Π΄ ΠΏΡΠ΅ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΠ»ΠΈ Π½Π° Π΄ΡΡΠ³ ΠΊΠΎΠΌΠΏΡΡΡΡ.
- ΠΠ°ΡΠ°Π½ΡΠΈΡΠ°Π½Π° Π΅ ΡΠ΅Π± ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΠ° Π½Π° Π½Π°ΡΠ°Π»Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Β«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 alert(1) 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 ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ (ΡΠ΅ΡΡ ΠΏΡΡΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅). 48 ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΡΠ° ΠΏΡΠΈΡΠΈΠ½Π΅Π½ΠΈ ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΊΠ°ΡΠΎ ΠΏΡΠ΅ΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° Π±ΡΡΠ΅ΡΠΈ ΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π²Π΅ΡΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½ΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°. ΠΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ, ΡΠ΅Π·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π°Ρ Π΄ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄ ΠΎΡ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½Π΅Ρ ΠΏΡΠΈ ΠΎΡΠ²Π°ΡΡΠ½Π΅ Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°Π½ΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ. 5 ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π·Π°ΠΎΠ±ΠΈΠΊΠ°Π»ΡΠ½Π΅ Π½Π° sandbox-ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡΡΠ° ΠΏΠΎΡΠ°Π΄ΠΈ Π½Π΅ΠΊΠΎΡΠ΅ΠΊΡΠ½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ ΠΈ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½ΠΎ ΠΏΡΠ΅ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π³ΡΠ°ΡΠΈΠΊΠ°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru


