LMTPASS

Toutes les actualités

Un passeport que les machines peuvent lire

· 4 min de lecture

L'article 78 exige des données ouvertes, structurées, lisibles par machine. Une page qui n'affiche rien tant qu'un navigateur n'a pas exécuté son code ne répond pas à un validateur, à un robot d'indexation ni à l'aperçu d'un lien. Ce qu'un scanner sans JavaScript doit voir.

Le passeport batterie est d'abord pensé pour un humain qui scanne un QR code avec son téléphone. Mais il est aussi lu par des programmes : les validateurs du registre européen, les outils des recycleurs et des réparateurs, les robots des moteurs de recherche, les services qui fabriquent l'aperçu d'un lien partagé dans une messagerie. L'article 78 du règlement en fait une exigence : les données du passeport doivent reposer sur des normes ouvertes, dans un format interopérable, lisible par machine, structuré et interrogeable.

Ce que voit un programme

Une page web moderne est souvent une coquille vide : un fichier HTML de quelques lignes, et un programme JavaScript qui, une fois exécuté par le navigateur, va chercher les données et dessine la page. Pour un humain, la différence est invisible. Pour un programme qui ne fait que télécharger la page, elle est totale : il reçoit la coquille, pas le contenu.

C'est le cas de la plupart des robots d'indexation, de tous les aperçus de liens, de la quasi-totalité des outils de validation et de la plupart des scripts qu'un recycleur pourra écrire pour lire des centaines de passeports. Le passeport existe, mais pas pour eux.

Deux manières de répondre

Une interface de programmation. Le passeport est accessible sous forme de données structurées, par exemple en JSON, à une adresse stable. C'est la voie que privilégient l'article 78 et les normes européennes du passeport numérique : des données, pas une mise en page. Les outils des professionnels s'y branchent directement.

Une page rendue par le serveur. La même adresse que celle du QR code renvoie, à un client qui n'exécute pas de code, une page HTML complète avec les données déjà dedans, et des métadonnées structurées qui décrivent le produit. Les navigateurs continuent de recevoir l'application interactive. Chacun reçoit ce qu'il sait lire.

Les deux se complètent. La première sert l'intégration ; la seconde sert tout ce qui tombe sur l'adresse sans s'annoncer : l'aperçu dans une messagerie professionnelle, le moteur de recherche, le script écrit en dix minutes.

Les mêmes règles d'accès

Servir une page lisible par les machines ne change rien aux niveaux d'accès. Le règlement distingue ce qui est public de ce qui est réservé aux personnes ayant un intérêt légitime et aux autorités. Un robot est un lecteur public : il reçoit exactement ce que recevrait un passant, et rien de ce qui est restreint. La version sans JavaScript doit être construite à partir du même filtrage que la page interactive, pas à partir d'un export complet.

Deux conséquences pratiques. Un passeport à l'état de brouillon, ou retiré, répond aux robots par une page d'erreur qui leur demande de ne pas l'indexer. Et un passeport dont la batterie a été retirée du marché le dit en tête de page, lisiblement, à l'humain comme à la machine.

L'injection, le risque classique

Rendre une page à partir de données saisies par des tiers, fournisseurs compris, expose à un risque bien connu : qu'un champ contienne du code au lieu d'un texte. Un nom de modèle contenant une balise de script, affiché tel quel, exécuterait ce script chez tous les visiteurs. Chaque valeur doit être échappée avant d'être écrite dans la page, sans exception, y compris dans les métadonnées structurées et dans les adresses de liens, qui ne doivent admettre que des URL web ordinaires.

Ce que cela donne

Un lien de passeport collé dans une conversation affiche le modèle, le fabricant et une description. Un moteur de recherche indexe la page avec son titre et sa fiche produit. Un validateur reçoit du contenu à valider. Un recycleur qui lit mille passeports n'a pas à piloter un navigateur. Et le visiteur avec un téléphone ne voit aucune différence, sinon que la page existe pour tout le monde.