De release van de webbrowser Firefox 148 heeft plaatsgevonden en updates voor de vorige versies met langdurige ondersteuning — 140.8.0 en 115.33.0 (de laatste in de 115.x serie) zijn vastgesteld. Binnenkort zal de tak Firefox 149 in de bèta-testfase worden geïntroduceerd, waarvan de release gepland staat op 24 maart.
Belangrijkste vernieuwingen in Firefox 148 (1, 2, 3):
- In de instellingen is het eerder beloofde gedeelte 'AI Controls' toegevoegd voor het beheer van het gebruik van AI. Gebruikers kunnen met één klik alle AI-functies uitschakelen of selectief alleen de benodigde functionaliteit activeren. Voor selectieve deactivering zijn mogelijkheden beschikbaar, zoals vertaling naar een andere taal, tekstherkenning op afbeeldingen en in gescande PDF-documenten, aanbevelingen en labels bij het groeperen van tabbladen, het genereren van een samenvatting van de pagina-inhoud bij het voorvertonen van links en een interface voor interactie met chatbots. Elke functie kan worden in- of uitgeschakeld of geblokkeerd. Bij blokkering worden lokaal geïnstalleerde AI-modellen verwijderd en worden interface-elementen verborgen.

- In de instellingen is een aparte optie toegevoegd om ongeplande afstandsbediening van bugfixes en wijzigingen toe te staan tussen releases. Eerder was deze mogelijkheid gekoppeld aan het inschakelen van telemetrie en deelname aan het testen van experimentele functies (Privacy & Security > Firfox Data collection > Install and run studies), maar met Firefox 148 kan dit nu onafhankelijk worden ingeschakeld.

- Achtergrondafbeeldingen die voor de pagina zijn geselecteerd, die wordt weergegeven bij het openen van een nieuw tabblad, worden nu gebruikt voor zowel standaard nieuwe tabbladen als voor nieuwe container-tabbladen.
- Voor gebruikers van Windows 10 en 11 is de functie Firefox Backup toegevoegd, waarmee back-ups van door de browser opgeslagen gegevens, zoals bladwijzers, instellingen en wachtwoorden, kunnen worden gemaakt. Gegevens die door de gebruiker zijn geselecteerd voor verwijdering bij het sluiten van de browser, worden niet in de back-up opgenomen. De gemaakte back-up kan worden gebruikt om de status te herstellen na een herinstallatie van het besturingssysteem of op een andere computer.
- Web-compatibiliteit is verzekerd voor het oorspronkelijke document «about:blank», dat nu synchroon wordt gegenereerd en bij het navigeren op de pagina niet in asynchrone modus wordt vervangen door een tweede leeg document, dat door de parser wordt gegenereerd (door deze vervanging ontstond er een raceconditie, wat soms leidde tot het verlies van wijzigingen die onmiddellijk na het aanroepen van window.open() via JavaScript waren aangebracht).
- De Service worker heeft ondersteuning voor de API WebGPU gekregen, waarmee WebGPU-bewerkingen op de achtergrond kunnen worden uitgevoerd, bijvoorbeeld in extensies of bij het uitvoeren van algemene taken voor verschillende tabbladen van dezelfde site.
- In JavaScript zijn de methoden Iterator.zip() en Iterator.zipKeyed() toegevoegd om meerdere arrays te combineren. De methoden maken het mogelijk om op basis van meerdere iterators een nieuwe iterator te creëren, waarbij elk element een array of object is met de waarden van de iterators op dezelfde positie. 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}`); } // Zal weergeven: // 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}.`); } // Zal weergeven: // Caroline, aged 30, lives in New York. // Danielle, aged 25, lives in London. // Evelyn, aged 35, lives in Hong Kong.
- De API Trusted Types is geïmplementeerd, die wordt ontwikkeld ter bescherming tegen manipulaties met de DOM, die kunnen leiden tot cross-site scripting (DOM XSS). Bijvoorbeeld, onjuiste verwerking van door de gebruiker ontvangen gegevens in eval()-blokken of met «.innerHTML»-invoegen kan leiden tot de uitvoering van JavaScript-code in de context van een specifieke pagina. Trusted Types vereist het gebruik van speciale TrustedHTML-objecten in plaats van 'raw strings' in gevaarlijke aanroepen, zoals element.innerHTML, document.write() en setTimeout(). TrustedHTML-objecten worden op hun beurt gemaakt door functies die door de ontwikkelaar zijn geschreven, die gegevens valideren en opschonen.
- De API Sanitizer is toegevoegd, die methoden biedt voor het manipuleren van HTML en het verwijderen van HTML-elementen uit de inhoud die de weergave en uitvoering beïnvloeden. Voor veilige invoeging van HTML-inhoud is de methode element.setHTML() voorgesteld, die lijkt op element.innerHTML, maar bescherming biedt tegen cross-site scripting (XSS). Voor veilige HTML-parsing is de methode document.parseHTML() geïmplementeerd. De API kan nuttig zijn voor het opschonen van binnenkomende gegevens van externe bronnen en het verwijderen van HTML-tags die kunnen worden gebruikt voor XSS-aanvallen. const unsanitizedString = «abc def»; const sanitizer1 = new Sanitizer({ elements: [«div», «p», «button», «script»], }); const target = document.getElementById(«target»); target.setHTML(unsanitizedString, { sanitizer: sanitizer1 });
- Er is ondersteuning toegevoegd voor de eigenschap «location.ancestorOrigins», die een lijst bevat van de oorsprongen (origin) van alle bovenliggende elementen van het document die zijn gekoppeld aan het opgegeven Location-object. In de praktijk kan deze eigenschap bijvoorbeeld worden gebruikt om te bepalen of het document is geladen via een iframe op een andere website.
- In de API Navigation is het object NavigationPrecommitController toegevoegd met de methode addHandler(), waarmee een handler kan worden aangesloten die wordt geactiveerd bij navigatie tijdens de ‘post-commit’ fase, wanneer de nieuwe URL al in de adresbalk wordt weergegeven.
- De CSS-eigenschap position-try-order is toegevoegd, die de prioriteit van het kiezen van alternatieve posities bepaalt wanneer een element met ankerpositionering niet op het scherm past. Deze eigenschap maakt deel uit van de CSS Anchor Positioning set, waarmee de weergave van elementen die zijn verbonden aan de locatie van andere elementen kan worden beheerd zonder het gebruik van JavaScript, bijvoorbeeld voor het vastmaken van elementen aan pop-upvensters (popover) die verschijnen zoals tooltips.
- In CSS is de functie shape() toegevoegd, die het mogelijk maakt om vormen te creëren met behulp van de CSS-eigenschappen clip-path en offset-path. De functie shape() ondersteunt vormvormingscommando's die equivalent zijn aan de functie path(), maar stelt ook in staat om de standaard CSS-syntaxis te gebruiken.
- In de versie van Firefox voor Android is het ontwerp van de werkbalk gewijzigd, is de aanpassing van de inhoud van de werkbalk verbeterd en is er een optie toegevoegd om zichtbaar tekst van een link snel te kopiëren zonder de pagina te openen.
Naast de nieuwe functies en bugfixes zijn er in Firefox 148 60 kwetsbaarheden verholpen (zes keer meer dan in de vorige versie). 48 van deze kwetsbaarheden worden veroorzaakt door problemen met geheugenbeheer, zoals bufferoverlopen en toegang tot al vrijgegeven geheugen. Deze problemen kunnen potentieel leiden tot de uitvoering van kwaadaardige code bij het openen van speciaal gemaakte pagina's. Vijf kwetsbaarheden stellen aanvallers in staat om de sandbox-isolatie te omzeilen door fouten in grenscontroles en integer overflow in de grafische component.
Bron: opennet.ru


