Compania Google a lansat versiunea browser-ului web Chrome 104. De asemenea, este disponibilă o variantă stabilă a proiectului liber Chromium, care stă la baza Chrome. Browser-ul Chrome se deosebește de Chromium prin utilizarea logo-urilor Google, a sistemului de trimitere a notificărilor în caz de crash, modulele pentru redarea conținutului video protejat (DRM), sistemul automat de instalare a actualizărilor, activarea constantă a izolării Sandbox, furnizarea cheilor pentru Google API și transmiterea parametrilor RLZ în timpul căutării. Pentru cei care au nevoie de mai mult timp pentru actualizare, este susținută o ramură separată Extended Stable, care este însoțită de 8 săptămâni. Următoarea versiune Chrome 105 este programată pentru 30 august.
Principalele modificări în Chrome 104:
- A fost introdus un timp limitat de existență pentru Cookie - toate Cookie-urile noi sau actualizate vor fi șterse automat după 400 de zile de existență, chiar dacă timpul de expirare setat prin atributele Expires și Max-Age depășește 400 de zile (pentru astfel de Cookie, durata de viață va fi limitată la 400 de zile). Cele create înainte de introducerea restricției Cookie-urilor își vor păstra durata de viață, chiar dacă aceasta depășește 400 de zile, dar vor fi limitate în cazul actualizării. Modificarea reflectă noile cerințe menționate în schița noii specificații.
- A fost inclusă blocarea accesului din iframe la URL-uri care fac referire la sistemul de fișiere local ("filesystem://").
- Pentru a accelera încărcarea paginii, a fost adăugată o nouă optimizare care permite stabilirea unei conexiuni către gazda țintă în momentul în care este apăsată legătura, fără a aștepta ridicarea butonului sau îndepărtarea degetului de pe ecranul tactil.
- Au fost adăugate setări pentru gestionarea API-ului "Topics & Interest Group", promovat în cadrul inițiativei Privacy Sandbox, care permite definirea categoriilor de interese ale utilizatorului și utilizarea acestora în locul Cookie-urilor de urmărire pentru a evidenția grupuri de utilizatori cu interese similare, fără a identifica utilizatorii individuali. În plus, au fost introduse dialoguri informative care apar o singură dată, explicând utilizatorului esența tehnologiei și oferind opțiunea de a activa suportul acesteia în setări.
- Au fost crescute valorile prag pentru limitarea apelurilor înlănțuite ale timerelor setTimeout și setInterval, pornite cu un interval mai mic de 4 ms («setTimeout(…, <4ms)»). Limita totală pentru aceste apeluri a fost majorată de la 5 la 100, ceea ce permite o utilizare agresivă fără a restricționa apelurile individuale, dar prevenind abuzurile care ar putea afecta performanța browserului.
- A fost activată trimiterea către serverul site-ului principal a unei cereri de confirmare a drepturilor CORS (Cross-Origin Resource Sharing) cu antetul «Access-Control-Request-Private-Network: true», în cazul accesării unui subresurs dintr-o rețea internă (192.168.x.x, 10.x.x.x, 172.16-31.x.x) sau localhost (127.x.x.x). La confirmarea operațiunii, serverul trebuie să returneze antetul «Access-Control-Allow-Private-Network: true». În versiunea Chrome 104, rezultatul confirmării nu influențează încă procesarea cererii — în cazul lipsei confirmării, consola web afișează un avertisment, dar cererea subresursei nu este blocată. Activarea blocării la lipsa confirmării este server așteptată nu mai devreme de lansarea Chrome 107. Pentru a activa blocarea în versiuni mai timpurii, se poate activa setarea «chrome://flags/#private-network-access-respect-preflight-results».
Confirmarea autorizării serverul Introduse pentru a îmbunătăți protecția împotriva atacurilor legate de accesarea resurselor din rețeaua locală sau de pe computerul utilizatorului (localhost) din scripturi încărcate la deschiderea site-ului. Aceste solicitări sunt folosite de atacatori pentru a efectua atacuri CSRF asupra routerelor, punctelor de acces, imprimantelor, interfețelor web corporative și altor dispozitive și servicii care acceptă solicitări doar din rețeaua locală. Pentru a proteja împotriva acestor atacuri, în cazul accesării oricăror subresurse din rețeaua internă, browserul va trimite o solicitare explicită pentru a autoriza încărcarea acestor subresurse.
- A fost adăugat mecanismul Region Capture, care permite decuparea conținutului suplimentar din video-urile generate pe baza capturii de ecran. De exemplu, prin API-ul getDisplayMedia, aplicația web poate organiza transmiterea video-ului cu conținutul tab-ului, iar Region Capture permite decuparea unei părți a conținutului, inclusiv elemente de control pentru videoconferințe.
- A fost adădat suportul pentru noul sintax în specificația Media Queries Level 4, care definesc dimensiunea minimă și maximă a zonei vizibile (viewport). Noua sintaxă permite utilizarea operatorilor matematici de comparație și a operatorilor logici, cum ar fi «not», «or» și «and». De exemplu, în loc de «@media (min-width: 400px) { … }» acum se poate specifica «@media (width >= 400px) { … }».
- În modul Origin Trials (funcționalități experimentale care necesită activare separată) au fost adăugate mai multe API-uri noi. Origin Trial permite utilizarea API-ului specificat din aplicații încărcate de pe localhost sau 127.0.0.1 sau după înregistrarea și obținerea unui token special, care este valabil pentru o perioadă limitată pentru un anumit site.
- A fost adătată proprietatea CSS «focusgroup» pentru îmbunătățirea navigării între elemente folosind săgețile de control ale cursorului de pe tastatură.
- În API-ul Secure Payment Confirmation a fost inclusă posibilitatea ca utilizatorul să dezactiveze stocarea parametrilor cardurilor de credit. Pentru a afișa un dialog care permite renunțarea la salvarea parametrilor cardurilor de credit, constructorul PaymentRequest() prevede un flag „showOptOut: true”.
- A fost adăugat API-ul Shared Element Transitions, care permite realizarea unei tranziții fluide între diferitele viziuni ale conținutului în aplicațiile web cu o singură pagină.
- A fost stabilizată suportul pentru regulile speculative (Speculation rules), care permit autorilor de site-uri să transfere browserului informații despre paginile cele mai probabile pe care utilizatorul le-ar putea accesa. Browserul folosește aceste informații pentru a preîncărca și redimensiona conținutul paginilor.
- A fost stabilizată mecanismul de ambalare a subresurselor în pachete în format Web Bundle, care permite creșterea eficienței descărcării unui număr mare de fișiere însoțitoare (CSS, JavaScript, imagini, iframe). Spre deosebire de pachetele în format Webpack, formatul Web Bundle are următoarele avantaje: în cache-ul HTTP nu se stochează pachetul în sine, ci componentele sale; compilarea și executarea JavaScript-ului începe fără a aștepta descărcarea completă a pachetului; se permite includerea de resurse suplimentare, cum ar fi CSS și imagini, care în webpack trebuiau codificate sub formă de șiruri JavaScript.
- A fost adăugat CSS-ul proprietății object-view-box, care permite definirea unei părți din imagine care va fi afișată în zona rezervată în locul elementului dat, ceea ce poate fi folosit, de exemplu, pentru a adăuga un cadru sau o umbră.
- A fost adăugat API-ul Fullscreen Capability Delegation, care permite unui obiect Window să transfere unui alt obiect Window dreptul de a apela requestFullscreen().
- A fost adăugat API-ul Fullscreen Companion Window, care permite plasarea conținutului în mod fullscreen și a ferestrelor pop-up pe un alt ecran după obținerea confirmării din partea utilizatorului.
- În CSS-ul proprietății overflow-clip-margin a fost adăugat atributul visual-box, care definește din ce punct ar trebui începută tăierea conținutului care depășește limita zonei (poate lua valorile content-box, padding-box și border-box).
- În API-ul Async Clipboard a fost adăugată posibilitatea de a defini formate specializate pentru datele transmise prin clipboard, diferite de text, imagini și text cu markup.
- WebGL oferă suport pentru specificarea spațiului de culoare pentru buffer-ul de randare și conversia la importul din textură.
- Suportul pentru platformele OS X 10.11 și macOS 10.12 a fost întrerupt.
- Suportul pentru API U2F (Cryptotoken), care a fost declarat depreciat și dezactivat în mod implicit, a fost oprit. API U2F a fost înlocuit de API Web Authentication.
- Îmbunătățiri au fost aduse instrumentelor pentru dezvoltatori web. În debugger a fost adăugată opțiunea de a restarta codul de la începutul funcției după ce a fost atins un punct de oprire în cadrul funcției. A fost adăugat suport pentru dezvoltarea extensiilor pentru panoul Recorder. În panoul de analiză a performanței a fost adăugat suport pentru vizualizarea marcajelor setate în aplicația web prin apelarea metodei performance.measure(). Recomandările pentru completarea automată a proprietăților obiectelor JavaScript au fost îmbunătățite. La completarea automată a variabilelor CSS, s-a asigurat o previzualizare a valorilor, nesusținute de culori.

Pe lângă noutățile și corecțiile de erori, noua versiune a eliminat 27 de vulnerabilități. Multe dintre vulnerabilități au fost detectate prin testare automatizată folosind instrumentele AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer și AFL. Nu au fost descoperite probleme critice care să permită ocolirea tuturor straturilor de protecție ale browser-ului și executarea codului pe sistem dincolo de mediul sandbox. În cadrul programului de recompensare pentru descoperirea vulnerabilităților pentru această versiune, compania Google a plătit 22 de premii în valoare totală de 84 de mii de dolari (o recompensă de 15000 de dolari, o recompensă de 10000 de dolari, o recompensă de 8000 de dolari, o recompensă de 7000 de dolari, patru premii de 5000 de dolari, o recompensă de 4000 de dolari, trei premii de 3000 de dolari, patru premii de 2000 de dolari și trei premii de 1000 de dolari). Valoarea unei recompense nu a fost deocamdată stabilită.
Sursa: opennet.ro

