Compania Google a lansat versiunea web a browserului Chrome 95. În același timp, este disponibilă versiunea stabilă a proiectului liber Chromium, care stă la baza Chrome. Browserul Chrome se distinge prin utilizarea siglei Google, existenta unui sistem de notificări în caz de blocare, module pentru redarea conținutului video protejat (DRM), un sistem de actualizări automate și transmiterea parametrelor RLZ în timpul căutărilor. Conform noului ciclu de dezvoltare de 4 săptămâni, următoarea versiune Chrome 96 este planificată pentru 16 noiembrie. Pentru cei care au nevoie de mai mult timp pentru actualizare, se oferă o ramură Extended Stable, care este însoțită de 8 săptămâni, în care a fost realizată o actualizare pentru versiunea anterioară Chrome 94.
Principalele modificări în Chrome 95:
- Pentru utilizatorii de Linux, Windows, macOS și ChromeOS, a fost propus un nou panou lateral, care se afișează în dreapta conținutului și se activează prin clic pe un simbol special din bara cu adresa. În panou apare un rezumat cu marcajele și lista de lectură. Modificarea nu este activată pentru toți utilizatorii, iar pentru activare se poate utiliza setarea „chrome://flags/#side-panel”.

- A fost implementată o solicitare explicită de permisiuni pentru salvarea adreselor introduse în formularele web, pentru a fi utilizate ulterior în sistemul de completare automată a formularelor. Atunci când se detectează existența adreselor în formulare, utilizatorului i se arată acum o fereastră de dialog care îi permite să salveze adresa, să o editeze, să actualizeze o adresă salvată anterior sau să renunțe la salvare.
- Codul pentru suportul protocolului FTP a fost eliminat. În Chrome 88, suportul pentru FTP a fost dezactivat în mod implicit, dar a fost păstrat un flag pentru a permite revenirea la acesta.
- Suportul pentru URL-uri cu nume de gazde care se termină cu cifre, dar care nu corespund adreselor IPv4, a fost întrerupt. De exemplu, URL-ul „http://127.1/”, „http://foo.127.1/” și „http://127.0.0.0.1” vor fi considerate acum ca fiind incorecte.
- Pentru WebAssembly, a fost implementată capacitatea de a crea gestionari de excepții care pot intercepta execuția în cazul în care apare o excepție în timpul execuției unui anumit cod. Se suportă atât interceptarea excepțiilor cunoscute ale modulului WebAssembly, cât și a excepțiilor în timpul apelării funcțiilor importate. Pentru a intercepta excepțiile, modulul WebAssembly trebuie să fie compilat de un compilator care suportă excepțiile, cum ar fi Emscripten.
Se observă că gestionarea excepțiilor la nivelul WebAssembly permite o reducere semnificativă a dimensiunii codului generat, comparativ cu gestionarea excepțiilor prin intermediul JavaScript. De exemplu, compilarea optimizatorului Binaryen cu gestionarea excepțiilor prin JavaScript duce la o creștere a codului cu 43%, iar cu WebAssembly — cu 9%. În plus, atunci când se folosește modul de optimizare „-O3”, codul cu gestionarea excepțiilor prin WebAssembly se apropie foarte mult de performanța codului fără gestionatori de excepții, în timp ce gestionarea excepțiilor prin JavaScript determină o încetinire a execuției cu 30%.
- Este interzisă partajarea modulelor WebAssembly între domenii diferite (cross-origin) în cadrul aceleași aplicații.
- Î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.
- S-a activat restricționarea informațiilor în antetul HTTP User-Agent și în parametrii JavaScript navigator.userAgent, navigator.appVersion și navigator.platform. În antet rămân doar informații despre numele browserului, versiunea majoră a browserului, platforma și tipul dispozitivului (telefon mobil, PC, tabletă). Pentru a obține date suplimentare, cum ar fi versiunea exactă și datele extinse despre platformă, trebuie folosit API-ul User Agent Client Hints. Începerea restricționării User-Agent pe sistemele utilizatorilor obișnuiți este programată pentru lansarea Chrome 102, care va fi publicată în șase luni.
- A fost propusă posibilitatea creării descriptorilor de acces (Access Handles) pentru API-ul File System Access, care permite aplicațiilor web să citească și să scrie date direct în fișiere și directoare pe dispozitivul utilizatorului. Pentru a reduce metodele prin care aplicațiile web pot accesa sistemul de fișiere, compania Google plănuiește să combine API-ul File System Access și Storage Foundation. Ca pregătire pentru o astfel de fuzionare, s-a propus suportul pentru descriptorii de acces, care completează metodele de operare bazate pe descriptoare de fișiere cu funcționalități extinse, cum ar fi blocarea scrierii de către alte procese și crearea de fluxuri distincte pentru scriere și citire, inclusiv cu suport pentru citirea și scrierea din worker-e în mod sincron.
- API-ul Secure Payment Confirmation a fost stabilizat și propus ca default, cu implementarea unei noi extensii 'payment', care oferă o confirmare suplimentară a tranzacției de plată. Partea care verifică, de exemplu, banca, are posibilitatea de a genera o cheie publică PublicKeyCredential, care poate fi solicitată de vânzător pentru a obține o confirmare suplimentară a plății prin API-ul Payment Request, folosind metoda de plată 'secure-payment-confirmation'.
- În callback-urile stabilite prin constructorul PerformanceObserver, a fost implementată transmiterea proprietății droppedEntriesCount, permițându-ne să înțelegem câte metrici de performanță ale site-ului au fost abandonate din cauza faptului că nu au încăput în bufferul furnizat.
- A fost adăugat API-ul EyeDropper, care permite apelarea interfeței furnizate de browser pentru a determina culoarea pixelilor aleatorii de pe ecran, ceea ce poate fi utilizat, de exemplu, în editorii grafici implementați sub formă de aplicații web. const eyeDropper = new EyeDropper(); const result = await eyeDropper.open(); // result = {sRGBHex: '#160731'}
- A fost adăugată funcția self.reportError(), care permite scripturilor să afișeze erori în consolă, emulând apariția unei excepții nemonitorizate.
- A fost adăugat API-ul URLPattern, pentru a verifica dacă un URL se potrivește cu un anumit șablon, ceea ce poate fi folosit, de exemplu, pentru a analiza linkuri și pentru a redirecționa cererile către handleri în service worker. const p = new URLPattern({ protocol: 'https', hostname: 'example.com', pathname: '/:folder/*/:fileName.jpg', });
- API-ul Intl.DisplayNames a fost extins, prin care se pot obține denumiri localizate pentru limbi, țări, valute, elemente de dată etc. În noua versiune au fost adăugate noi tipuri de denumiri 'calendar' și 'dateTimeField', prin care se pot obține denumiri localizate ale calendarului și ale câmpurilor de dată și oră (de exemplu, denumirea lunilor). Pentru tipul 'language' a fost adăugată suportul pentru utilizarea dialectelor limbilor.
- În API-ul Intl.DateTimeFormat a fost adăugată suportul pentru noi valori ale parametrului timeZoneName: 'shortGeneric' pentru a afișa un identificator scurt al fusului orar (de exemplu, 'PT', 'ET'), 'longGeneric' - lung ('Pacific Time', 'Mountain Time'), 'shortOffset' - cu un offset scurt față de GMT ('GMT+5') și 'longOffset' cu un offset lung față de GMT ('GMT+0500').
- API U2F (Cryptotoken) a fost declarat învechit, în locul său urmând să fie utilizat API-ul Web Authentication. API U2F va fi dezactivat în mod implicit în versiunea Chrome 98 și eliminat complet în Chrome 104.
- Au fost aduse îmbunătățiri instrumentelor pentru dezvoltatorii web. În panoul Styles, ajustarea proprietăților CSS legate de dimensiune (height, padding etc.) a fost simplificată. În tab-ul Issues a fost adăugată opțiunea de a ascunde problemele individuale. În consola web și în panourile Sources și Properties, a fost îmbunătățită afișarea proprietăților (proprietățile proprii sunt acum marcate cu bold și sunt afișate la începutul listei).

Pe lângă noutăți și corectarea erorilor, în noua versiune au fost remediate 19 vulnerabilități. Multe dintre vulnerabilități au fost identificate prin testare automatizată folosind instrumentele AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer și AFL. Nu au fost identificate probleme critice care să permită ocolirea tuturor nivelurilor de apărare ale browser-ului și executarea de cod în sistem dincolo de mediu sandbox. În cadrul programului de recompensare a descoperirii vulnerabilităților pentru această versiune, compania Google a acordat 16 premii în valoare de 74 de mii de dolari (un premiu de $20000, două premii de $10000, un premiu de $7500, un premiu de $6000, trei premii de $5000 și câte un premiu de $3000, $2000 și $1000). Dimensiunea a 5 recompense nu a fost încă stabilită.
Sursa: opennet.ro


