Door Koen Vervloesem

Freelanceredacteur

Aan de slag met ESP Web Tools

Microcontrollers flashen in de webbrowser

07-12-2022 • 06:00

49

Singlepage-opmaak

Veiligheid en mogelijkheden

Websites die toegang hebben tot apparaten die aan je pc hangen; het klinkt een beetje eng. Hoe zit het dan met de beveiliging? Mozilla is duidelijk in zijn officiële verklaring over Web Serial: “Devices that offer serial interfaces often expose powerful, low-level functions over the interface with little or no authentication. Exposing that sort of capability to the web without adequate safeguards presents a significant threat to those devices.” Dat is dan ook de reden waarom Firefox geen ondersteuning biedt voor de Web Serial API.

Toch zijn er wel degelijk 'safeguards' ingebouwd in de implementatie van Web Serial, en de specificatie gaat uitgebreid in op de beveiligingsoverwegingen. Een webpagina die JavaScript-code bevat die de Web Serial API gebruikt, toont een melding aan de gebruiker, die moet klikken op het apparaat waarmee hij wil verbinden. Het vereist dus een expliciete actie van de gebruiker. De webpagina krijgt ook alleen maar toegang tot het apparaat dat de gebruiker heeft aangeklikt en kan dus niet opvragen welke apparaten er allemaal aangesloten zijn.

De verbinding blijft ook maar open zolang je de webpagina open hebt. Ververs of sluit je een webpagina die een seriële verbinding heeft geopend, dan wordt de verbinding gesloten. Er wordt ook altijd een icoontje getoond op het tabblad van de pagina zolang de verbinding open is.

Web Serial werkt ook alleen over Https, tenzij je de webpagina op je pc host en via localhost benadert. Je hoeft dus niet bang te zijn dat er gevoelige gegevens van je apparaten onversleuteld over internet worden verspreid. En een man-in-the-middleaanval waarbij er bytes in de communicatie tussen de webpagina en je apparaat worden geïnjecteerd, is zo ook niet mogelijk. Het belangrijkste risico is een phishingaanval, waarbij een website zich voordoet voor een andere. Daardoor zou je mogelijk aan de verkeerde website seriële toegang tot je apparaat geven.

Bij gebruik van Web Serial moet je de website altijd eerst toestemming geven voor toegang tot een specifiek apparaat.
Bij het gebruik van Web Serial moet je de website altijd eerst toestemming geven voor toegang tot een specifiek apparaat.

Mogelijkheden van Web Serial

Wat is er dan zoal mogelijk met Web Serial? Alles wat lokale software met seriële communicatie kan doen. Zo biedt de website serialterminal.com een seriële terminalemulator op het web aan. Wil je logs bekijken die een apparaatje op zijn seriële interface aanbiedt, dan hoef je de USB-kabel maar aan te sluiten, de website serialterminal.com te openen, de baudrate in te stellen, op 'Connect' te klikken en je apparaat te kiezen. Daarna zie je de boodschappen voorbij scrollen. De broncode van de website is open. Het Google Chrome-team heeft als demoapplicatie voor de Web Serial API ook een serialterminal ontwikkeld, waarvan de broncode beschikbaar is. Dit project ondersteunt de Web Serial-polyfill en werkt zo bijvoorbeeld ook op Chrome voor Android.

De Adafruit WebSerial Plotter, waarvan de broncode ook vrijgegeven is, komt dan weer van pas voor projectjes waarbij een microcontrollerbordje sensordata naar de seriële interface stuurt in csv-formaat. De plotter toont de waardes dan in verschillende kleuren op een grafiekje, net zoals de Serial Plotter in de Arduino IDE dat doet. Meer interessante projecten vind je op het Reddit-forum r/WebSerialAPI. Wil je zelf met de Web Serial API aan het ontwikkelen gaan, lees dan zeker Getting started with the Web Serial API op Codelabs of Read from and write to a serial port op web.dev, allebei websites van Google.

Met de seriële terminal van Google bekijk je in je webbrowser logs van aangesloten apparaten.
Met de seriële terminal van Google bekijk je in je webbrowser logs van aangesloten apparaten.