1 points par GN⁺ 2024-02-05 | 1 commentaires | Partager sur WhatsApp
  • Contrairement aux plateformes smartphone et desktop, les extensions de navigateur constituent un rare écosystème logiciel piratable qui permet aux utilisateurs de modifier les applications web d’une manière que leurs développeurs d’origine n’avaient pas prévue
  • Les plus de 180 000 extensions du Chrome Store et le fait que près de la moitié des utilisateurs de Chrome en installent montrent que, lorsqu’il existe un moyen simple, les utilisateurs ordinaires assemblent eux-mêmes des expériences personnalisées
  • Le large éventail d’usages des extensions tient à l’ouverture du web — code client lisible par l’humain, balisage porteur de sens, mises en page web standard — plutôt qu’à des API propres à chaque application
  • Les extensions pour saisir des mots de passe, lire les kanjis, annoter, bloquer la publicité ou lire en vitesse 2x fonctionnent comme de petits outils utilisables sur plusieurs sites, créant une expérience logicielle différente du modèle centré sur les grandes applications
  • Les extensions malveillantes et les atteintes à la vie privée doivent continuer d’être traitées, mais en équilibrant accessibilité, compatibilité et permissions, on peut préserver cette extensibilité qui permet aux utilisateurs de transformer plus en profondeur les logiciels qu’ils utilisent

Pourquoi les extensions de navigateur sont particulières

  • Les discussions récentes sur les extensions de navigateur se sont concentrées sur les extensions malveillantes qui collectent l’historique web et sur les limitations imposées par Google au blocage des publicités, mais les extensions restent un cas particulier de logiciel piloté par l’utilisateur
  • Parmi les grandes plateformes logicielles, les extensions de navigateur sont une rare exception qui autorise et encourage les utilisateurs à modifier les applications qu’ils utilisent tous les jours, au-delà de l’intention de leurs développeurs d’origine
  • Sur les plateformes smartphone et desktop, ce type de modification est rare ou impossible, mais dans le navigateur, c’est devenu une activité courante
  • Les extensions ravivent l’idée que les utilisateurs peuvent contrôler plus en profondeur leur manière d’utiliser l’ordinateur

Des logiciels assemblés par les utilisateurs eux-mêmes

  • Quand une plateforme logicielle est ouverte au-delà d’un certain niveau, la manière dont les utilisateurs ordinaires interagissent avec le logiciel change elle aussi
  • Si l’on installe quatre extensions Gmail qui modifient aussi bien le design visuel que les fonctionnalités principales, on a, en un sens, assemblé son propre client e-mail
  • Les utilisateurs ne restent pas de simples consommateurs passifs d’applications préfabriquées : ils peuvent composer eux-mêmes leur manière personnalisée d’utiliser l’ordinateur
  • Le Chrome Store compte plus de 180 000 extensions, et près de la moitié des utilisateurs de Chrome installent des extensions de navigateur
  • Cette popularité montre que, lorsqu’il existe un moyen simple d’étendre les logiciels, beaucoup d’utilisateurs saisissent réellement cette occasion

Une plateforme piratable plutôt que des API par application

  • Les extensions de navigateur couvrent des cas d’usage très variés : saisie de mots de passe, lecture des kanjis japonais, simplification du design visuel de Gmail, surlignage et annotation d’articles, sauvegarde pour lecture ultérieure, lecture vidéo en vitesse 2x, blocage des publicités, etc.
  • La clé de cette grande variété d’usages est que la plupart des extensions modifient les applications d’une manière que les développeurs d’origine n’ont pas spécifiquement planifiée
    • Lorsqu’un journal japonais publie des articles, il n’a pas besoin de tenir compte de la compatibilité avec une extension de lecture des kanjis pour que celle-ci puisse fonctionner
    • Les développeurs d’extensions ne sont pas enfermés dans des API propres à chaque application, reflétant la vision de l’extensibilité de ses développeurs, et disposent donc d’une plus grande liberté créative
  • Plusieurs caractéristiques de la plateforme web rendent possible cette extensibilité non planifiée
    • Le mode traditionnel de déploiement du web transmet au navigateur le code client sous une forme lisible par l’humain
    • Même lorsque le code est obfusqué ou compilé depuis un autre langage, les source maps sont importantes pour préserver cet avantage
    • Le modèle de mise en page du web encourage un balisage sémantique standardisé
    • Les extensions de gestion de mots de passe fonctionnent parce que les pages web utilisent de manière fiable la balise form pour la soumission des mots de passe, plutôt qu’une implémentation maison
  • Quand les sites n’ont pas été conçus pour les extensions, des contournements ingénieux peuvent être nécessaires, mais c’est généralement possible avec une charge de travail raisonnable, sans des années de rétro-ingénierie
  • Même si des tensions peuvent apparaître entre développeurs de sites web et développeurs d’extensions, il est plus courant que les développeurs de sites acceptent les extensions créatives lorsque cela ne leur demande pas de travail supplémentaire
  • Les fonctionnalités de niche souhaitées seulement par un petit nombre d’utilisateurs peuvent être réalisées sous forme d’extensions par des membres motivés de la communauté, ce qui réduit aussi la charge pesant sur les développeurs d’applications

De petits outils plutôt que de grandes applications

  • Beaucoup d’extensions de navigateur fonctionnent comme des outils généralistes qui améliorent l’expérience d’utilisation de tous les sites web
  • Une extension d’annotation peut être utilisée sur tous les sites, sans exiger un outil de surlignage différent pour chaque article
  • Comme avec un surligneur physique, on apprend un outil puis on l’applique dans plusieurs contextes pour obtenir un fort effet de levier
  • Sur beaucoup de plateformes logicielles, on considère que le système d’exploitation fournit les outils transversaux et que les tiers fournissent des applications autonomes isolées ; avec les extensions de navigateur, les tiers ajoutent eux aussi des outils
  • Les petits morceaux de logiciel changent aussi l’économie
    • La plupart des extensions sont gratuites, et leur périmètre fonctionnel peut être trop réduit pour soutenir une activité à part entière
    • Pourtant, des gens créent des extensions, et les utilisateurs tirent de grands bénéfices de ces petits fragments de logiciel
    • Explorer un store d’extensions ressemble davantage à flâner dans un marché aux puces de quartier qu’à faire ses courses au supermarché
  • Les grands logiciels créés par de grandes entreprises ne sont pas la seule voie possible

Les racines de l’ouverture du web

  • Depuis les débuts de l’informatique personnelle, il existe une tradition philosophique qui voit l’ordinateur comme un média interactif dans lequel les utilisateurs ajoutent leurs propres idées et créent leurs propres outils
  • Cette tradition se retrouve dans des systèmes comme Smalltalk, Hypercard et, plus récemment, Dynamicland
  • Lorsque Tim Berners-Lee a créé le World Wide Web, il imaginait un système inscrit dans cette tradition
    • Sa vision était celle d’« un système où partager ce que l’on sait ou ce que l’on pense serait aussi facile qu’apprendre ce que quelqu’un d’autre sait »
    • Il pensait que le navigateur web devait aussi être un éditeur de sites web, mais le navigateur Mosaic a gagné en popularité sans cette fonctionnalité, ce qu’il a regretté
  • Le web est finalement devenu un lieu où n’importe qui peut publier des opinions ou des photos via des plateformes de réseaux sociaux
  • Mais dans une application comme Facebook, il faut publier dans des formats déterminés et l’utiliser de la manière définie par l’application, publicité comprise
  • Les extensions de navigateur permettent d’aller au-delà de la saisie dans une zone de texte fournie : elles permettent de modifier en profondeur la façon d’utiliser n’importe quelle application du web
  • Elles apportent une décentralisation qui empêche les entreprises créant de grands sites web de décider de chaque détail de l’expérience utilisateur

Comment améliorer les extensions

  • Il est nécessaire de protéger les utilisateurs contre les extensions malveillantes qui portent atteinte à la vie privée
  • Accessibilité

    • Aujourd’hui, passer de l’utilisation d’extensions à leur création exige d’apprendre une part importante du développement web
    • Il est aussi difficile de développer facilement des extensions dans le navigateur
    • On pourrait imaginer une transition fluide : modifier un site web dans les outils de développement, puis publier une petite extension
  • Compatibilité

    • Comme les extensions se branchent sur les sites web de manière non prise en charge, une mise à jour du site peut temporairement casser une extension
    • Les développeurs d’extensions doivent parfois corriger en urgence pour suivre les changements
    • Il faut des moyens de connecter de manière stable développeurs de sites web et développeurs d’extensions sans dépendre d’API d’extension explicites
    • Un balisage sémantique propre, un CSS lisible par l’humain et des source maps sont des pratiques existantes qui facilitent le développement d’extensions
    • Si, après la sortie d’une nouvelle version d’un logiciel cloud, les utilisateurs pouvaient continuer à utiliser l’ancienne version pendant trois mois, les développeurs d’extensions gagneraient du temps pour mettre leurs extensions à jour pour la nouvelle version
  • Permissions

    • Les extensions web peuvent modifier largement le client du navigateur, mais elles ne peuvent pas toucher au serveur
    • Si le serveur d’une application de réseau social ne fournit qu’un endpoint permettant de récupérer les publications par ordre chronologique, une extension de navigateur ne peut pas rechercher tous les posts par mot-clé
    • Repenser la frontière client-serveur permettrait aux extensions d’apporter des modifications plus profondes
    • Des permissions plus fortes rendent les problèmes de sécurité et de confidentialité plus difficiles, mais il faut considérer l’extensibilité comme une valeur et trouver un équilibre

Les possibilités de la prochaine plateforme

  • Beaker Browser et la communauté du web décentralisé explorent des manières de faire fonctionner le web sans serveur central
  • Ce type d’architecture peut donner aux utilisateurs un contrôle plus complet pour modifier la partie « serveur » des applications web
  • Le nouveau projet de Tim Berners-Lee, SOLID, inclut le principe d’une plus grande propriété des utilisateurs sur leurs données
  • Avec une propriété accrue des données, les utilisateurs peuvent, via des extensions et d’autres logiciels, manipuler leurs données avec une flexibilité qui dépasse ce qu’autorisent les API des serveurs d’applications
  • L’informatique est encore jeune, et les plateformes évoluent rapidement
  • Les extensions de navigateur modernes et les plateformes smartphone n’existent que depuis une dizaine d’années environ
  • Le degré d’ouverture des futures plateformes est une question que nous devons décider collectivement
  • Les extensions de navigateur sont un exemple de lieu où les utilisateurs peuvent, au quotidien, hacker les logiciels qu’ils utilisent et se les approprier

Mise à jour 2024

  • En relisant cinq ans plus tard l’article écrit en 2019, quelques projets liés ont été ajoutés
  • J’ai créé une extension de navigateur populaire pour Twitter et publié un article sur l’expérience d’utiliser des extensions comme moyen de corriger les problèmes des logiciels que l’on utilise tous les jours
  • Pendant mon doctorat avec Daniel Jackson au MIT, j’ai développé Wildcard, qui permet à des non-programmeurs de créer des extensions de navigateur à partir de feuilles de calcul
  • Glen travaille sur ExtensionPay, une plateforme de monétisation pour les personnes qui veulent faire d’une extension de navigateur un projet durable
  • Récemment, au laboratoire Ink & Switch, je travaille sur le malleable software fondé sur l’IA

1 commentaires

 
GN⁺ 2024-02-05
Commentaires sur Hacker News
  • C’est l’auteur. J’ai écrit ce texte il y a 5 ans, et depuis ma conviction sur la valeur des logiciels malléables n’a fait que se renforcer, même si certaines idées ont changé

    1. IA : l’IA devient de plus en plus rapide et compétente pour coder. Les IA actuelles sont souvent faibles sur l’architecture de haut niveau, mais elles gèrent bien les petites modifications locales, ce qui semble bien correspondre au code nécessaire pour écrire des extensions de navigateur. J’explore cette direction et j’en ai davantage parlé dans “Malleable software in the age of LLMs” : https://www.geoffreylitt.com/2023/03/25/llm-end-user-program...
    2. Sécurité : après avoir parlé avec des personnes qui ont créé divers plateformes d’extension, y compris l’API des extensions de navigateur, je vois encore plus clairement qu’il y a 5 ans que la sécurité est souvent le principal goulot d’étranglement pour déployer des plateformes d’extension grand public. Il est difficile de mettre en place des protections si l’on veut amener des utilisateurs ordinaires à installer, sur des logiciels importants, des extensions intrusives provenant de tiers non fiables
      Cela dit, je pense que les discussions sur les extensions sont trop centrées sur la sécurité au détriment d’autres valeurs. La possibilité de personnalisation peut, dans certains cas, être suffisamment importante pour passer avant la sécurité. Il existe aussi plusieurs pistes de solution. Au lieu d’installer depuis n’importe qui sur Internet, on peut échanger des extensions dans des relations de confiance, comme entre collègues ou amis, ou n’utiliser que des extensions qu’on a créées soi-même. La programmation assistée par IA pourrait rendre l’auto-fabrication plus réaliste, mais cela ouvre de nouveaux problèmes de sécurité. J’ai aussi rencontré des personnes qui ont des idées d’architecture logicielle capables de réduire cette tension fondamentale ; on en trouve un exemple ici : https://www.wildbuilt.world/p/inverting-three-key-relationsh...
    3. Accès au backend : je réalise de plus en plus que, sur un web centré sur le serveur, les extensions de navigateur n’ont accès qu’au code client, ce qui bloque souvent une personnalisation profonde. Il peut être impossible de lire les données voulues, ou il peut manquer une API d’écriture pour effectuer l’action nécessaire. Je reste optimiste sur ce que les extensions peuvent faire à l’intérieur de la frontière client, mais c’est une limite intrinsèque de la plateforme elle-même
      Au laboratoire de recherche Ink & Switch où je travaille actuellement, nous construisons des logiciels local-first : des logiciels collaboratifs où les données et le code sont sur mon appareil. Au-delà d’avantages comme la confidentialité, j’y vois la bonne base pour des extensions plus puissantes, puisque les données et le code de l’application ne sont pas enfermés sur un serveur : https://www.inkandswitch.com/local-first/
    • Le problème de sécurité des plateformes ouvertes est central. Si un système est assez ouvert pour que quelqu’un de compétent puisse le personnaliser librement, alors des acteurs malveillants peuvent aussi convaincre des personnes moins au fait de modifier ce système d’une manière nuisible
      Le fait de pouvoir créer soi-même un clavier personnalisé sur Android est formidable, mais le fait que quelqu’un puisse convaincre vos grands-parents d’installer un clavier avec keylogger intégré ne l’est pas du tout. Les extensions de navigateur ont toujours été un écosystème très chargé en malwares, et la blague consistant à dire qu’à chaque retour chez ses parents pour Thanksgiving il faut supprimer les barres d’outils d’Internet Explorer remonte à environ 1999
    • Si les navigateurs et les systèmes d’exploitation mobiles permettaient facilement de fournir de fausses ressources aux applications ou aux extensions, l’exécution de code non fiable pourrait devenir bien plus sûre
      « Oui, vous pouvez lire le contenu de mon téléphone. Pour vous, c’est tout son contenu, tout ce qu’il y a. Mais de mon point de vue, ce n’est qu’un dossier, et un dossier vide. C’est un nouveau téléphone, vous voyez. »
      « Oui, voici ma liste de contacts. Désolé qu’elle soit presque vide. Il y a juste un numéro premium très coûteux. J’espère que votre siège ne l’appellera pas. »
      « Oui, voici mon micro. Merci. J’imite très bien Rick Astley. »
      « Les photos de mon téléphone ? Les voilà. Ce ne sont que des photos de navets. Vous aimez ça ? »
    • La rencontre entre logiciels malléables, local-first et IA locale m’enthousiasme énormément. On a l’impression d’être à l’ouverture d’une nouvelle ère du logiciel et, si on s’y prend bien, on pourrait reprendre le contrôle des données aux grandes entreprises et retrouver une plus grande maîtrise de la propriété et de notre façon de travailler
      Je m’intéresse particulièrement à l’idée que des outils CRDT génériques comme Automerge ou Yjs deviennent le format de fichier de base des logiciels local-first, auxquels on viendrait brancher des backends de synchronisation et de collaboration interopérables. Les utilisateurs pourraient accéder directement aux données sous-jacentes avec des outils standard, et les fichiers pourraient être liés, imbriqués, branchés et fusionnés. On pourrait créer une nouvelle plateforme hypermédia où tous les documents peuvent être partagés, forkés et édités en temps réel. J’aime vraiment le travail fait chez Ink & Switch et j’attends la prochaine présentation avec impatience
    • Une grande limite des extensions de navigateur, c’est que même quand on les écrit pour son propre usage, il n’existe pas de mode d’installation convivial et extensible. Il n’y a aucun moyen de dire au navigateur qu’on fait confiance à toutes les extensions d’un certain répertoire et qu’il faut donc les charger automatiquement sans signature ni empaquetage en XPI
      Il n’existe pas de fonctionnalité du type « mettez le code et le manifest dans un répertoire, et le navigateur l’utilisera ». À l’époque où greasemonkey chargeait simplement des fichiers ordinaires depuis le sous-répertoire gm_scripts/ du profil du navigateur, cette simplicité de distribution poussait à créer énormément de userscripts. À ce moment-là, étendre des sites web était amusant et facile, mais Mozilla a tout supprimé
      La distribution est vraiment affreuse. Quand je modifie du code écrit par moi pour l’utiliser sur mon propre ordinateur, il n’est absolument pas question d’envoyer l’extension quelque part sur Internet pour la faire signer à chaque changement. Et la dernière fois que j’ai vérifié, l’outil de signature était une application NPM/node de plus de 100 MiB qu’il fallait considérer comme digne de confiance, plus grosse encore qu’une compilation du noyau Linux
    • Dans l’ensemble, je suis d’accord avec l’évaluation, mais le problème est que les éditeurs de navigateurs retirent souvent des API, ce qui casse de bonnes extensions populaires
  • En 2024, le cadre même des extensions de navigateur pose de gros problèmes. La plupart des extensions de navigateur sont de fait des extensions Google Chrome, et Google Chrome montre clairement, dans sa quête de revenus supplémentaires, qu’aucune API n’est à l’abri.
    Toute personne qui développe des extensions avec l’API Chrome devrait savoir qu’elle consacre peut-être ses efforts à quelque chose qu’une grande entreprise peut écraser sans réfléchir. Je n’ai pas envie de vivre dans une situation déjà stratégiquement perdue d’avance, donc à mon avis la discussion devrait porter sur les extensions Firefox. Firefox n’a pas non plus un historique irréprochable. Son passage à la compatibilité Google Chrome il y a quelques années m’agace encore énormément. Malgré tout, c’est qualitativement un meilleur environnement avec lequel composer.

    • Même en mettant cela de côté, les extensions 1) augmentent la surface d’attaque du navigateur, 2) sont souvent revendues à des acteurs malveillants contre de l’argent ou compromises, et 3) se cassent souvent de manière subtile, ce qui est acceptable pour les utilisateurs expérimentés mais se transforme en demandes de support pour les autres. Dans l’ensemble, les extensions sont un vrai désastre.
    • Les extensions de navigateur semblent davantage utilisées sur Firefox. Google est trop hostile aux extensions Chrome. Et avec le déclin de Firefox, l’écosystème des extensions a lui aussi rétréci.
      Pendant 10 ans, j’ai utilisé sur Firefox et Chrome quelque chose appelé “Ad Limiter”, avec exactement le même code. L’an dernier, quand Google a encore durci sa politique contre les bloqueurs de pub et envoyé des messages d’intimidation, j’ai abandonné la version Chrome.
    • On peut aussi considérer que ce n’est littéralement pas différent du développement dans n’importe quel autre environnement.
    • Je me demande si la fonction de synchronisation de Firefox a été corrigée. Avant, il fallait réellement déplacer les fichiers de profil. Il y a longtemps, quand je faisais de l’IT, Firefox était un vrai cauchemar à gérer en environnement d’entreprise. Bien sûr, à l’époque, on ne pouvait pas non plus contrôler l’installation des extensions Chrome.
    • Il existe un standard pour les extensions de navigateur. J’ai déjà créé des extensions avant même l’apparition de ce standard. Aujourd’hui, on peut développer des extensions qui fonctionnent sur Chrome, Firefox, Edge et Safari.
      Bien sûr, on peut aussi utiliser des API spécifiques à un navigateur. C’est vraiment une mauvaise idée, comme créer un site réservé à un seul navigateur. La base devrait être compatible. Et comme le code source des extensions est toujours visible, on peut le modifier pour une version qui fonctionne bien dans son propre navigateur, puis la repartager.
  • Vu qu’un grand nombre d’extensions de navigateur populaires ont été rachetées par des courtiers en données pour siphonner l’historique de navigation, il est difficile de dire qu’elles ont été sous-estimées. Leur modèle de sécurité et de confidentialité a été, ou reste, franchement mauvais, donc il faut être extrêmement prudent.
    Par exemple, je sais que des extensions de capture d’écran comme Awesome Screenshot aspiraient l’historique du navigateur pour l’envoyer à un courtier en données israélien. Ce genre de fonctionnalité aurait probablement davantage sa place dans les fonctions natives du navigateur.

    • Du point de vue de quelqu’un qui développe des extensions web payantes en achat unique, je dirais plutôt que ce sont les extensions payantes en achat unique qui sont sous-estimées.
      La formule “si je ne suis pas le client, alors je suis le produit” est devenue banale tellement elle est vraie. Mais qu’en est-il si je suis réellement le client ? À mon avis, une grande partie de la méfiance envers les extensions vient du fait qu’il est difficile de les monétiser directement. Si une extension ne rapporte pas d’argent et que quelqu’un propose de la racheter avec un chèque correct, il est difficile de refuser, surtout si elle impose aussi une charge de support au développeur. Bien sûr, comme presque tout le monde, j’ai un prix, mais aujourd’hui il faudrait sans doute un montant à 7 chiffres en dollars, peut-être même 8, et personne ne paiera cette somme pour mon extension. Comme elle est payante, sa base d’utilisateurs est relativement petite, et c’est précisément pour cette raison qu’elle ne représente pas non plus une grande opportunité de collecte de données ou de plan malveillant.
    • Pour cette raison, et aussi à cause du manque de granularité des permissions, j’utilise quand c’est possible des applications desktop plutôt que des extensions, et je garde une liste d’extensions très réduite. En gros, je n’installe que des extensions FOSS de gros auteurs de confiance comme Raymond Hill, ou des projets qui ne seront pas revendus.
      Bien sûr, les applications desktop présentent elles aussi des risques, mais historiquement ce type de fuite de données après rachat reste relativement plus rare que pour les applications desktop. En particulier sur macOS, les applications signées sont sandboxées et ne peuvent pas faire grand-chose sans autorisation de l’utilisateur.
    • Devoir confier toutes mes données de navigation à un codeur inconnu juste pour avoir des onglets verticaux sur Firefox, c’est de la folie. Donc je suis d’accord : il vaut mieux que cela fasse partie des fonctions natives du navigateur.
      Bien sûr, beaucoup de ces extensions sont open source, donc on peut les auditer. Le problème, c’est que je n’ai pas les compétences pour repérer du code malveillant, alors je me demande si cela ne pourrait pas être un bon cas d’usage pour l’IA. Je me demande si vous avez des idées sur la manière de concevoir de bons prompts pour détecter du code malveillant.
  • J’aimerais que les extensions de navigateur disposent d’autorisations plus granulaires. Mais il est difficile de vérifier si un logiciel utilise ses autorisations de manière malveillante, comme le montrent l’Obfuscated C Code Contest et l’Underhand C Contest. Et il est également difficile de transmettre à l’utilisateur des autorisations nuancées. La plupart des utilisateurs ne lisent pas le contenu technique ou ne le comprennent pas, et ils peuvent facilement être induits en erreur
    Il existe une astuce pour utiliser les extensions de manière plus sûre dans Chrome. Allez dans Profiles > Add profile > Continue without account, créez un profil séparé, puis installez-y l’extension voulue : elle sera alors complètement isolée des onglets connectés, de l’historique, des cookies, etc. du profil principal. De la même manière, on peut aussi utiliser Chrome Beta ou Chrome Canary à côté de Chrome classique pour y installer des extensions
    Par exemple, on peut installer sur ce profil des dizaines d’extensions de développement web potentiellement risquées, et le séparer comme un sandbox du profil utilisé pour la banque en ligne personnelle ou les connexions à des sites d’entreprise. Ce n’est pas pratique pour toutes les extensions, mais je fais ainsi pour le développement web et, pour l’usage personnel, je n’utilise que quelques extensions
    Dans l’extension de navigateur que je vends, l’autorisation que je voudrais vraiment demander est « observer uniquement le trafic réseau envoyé et reçu dans son propre onglet », mais en pratique je dois demander l’autorisation « lire et modifier toutes les données ». C’est pourquoi je partage l’astuce ci-dessus dans la description : https://chromewebstore.google.com/detail/checkbot-seo-web-sp...

    • En tant qu’utilisateur de Firefox, j’aimerais pouvoir désactiver les extensions par conteneur dans Multi-Account Containers. Les sites bancaires n’ont besoin d’aucune extension. On peut utiliser un profil séparé, mais l’expérience utilisateur est mauvaise
    • L’autorisation « lire et modifier toutes les données » est un gros obstacle pour les extensions de shopping. En réalité, il suffit seulement d’identifier les pages de shopping. J’ai essayé de bâtir la confiance en publiant l’analyse de suivi en open source : https://github.com/Score-Extension/score-extension-analytics...
      J’espère que la transparence pourra être un moyen de franchir cette barrière de confiance
    • J’aimerais qu’il existe un moyen de limiter toute la portée des autorisations d’une extension à une liste blanche de domaines. Dans Chromium, il existe un moyen de définir en liste blanche les domaines sur lesquels une extension peut s’exécuter[1], mais il me semble que cela n’affecte pas les autorisations plus larges comme l’historique général
      [1] Il suffit de cliquer sur « Details » de l’extension, de changer l’option « Allow this extension to read and change all your data on websites you visit » en « On specific sites », puis d’ajouter les sites à la liste blanche
    • Sous Windows, on peut utiliser des applications empaquetées par portableapps.com. Il faut AllowMultipleInstances=true dans le fichier .ini
  • Dire que « les extensions de navigateur rappellent la sensation d’exercer un contrôle profond sur la manière dont on utilise son ordinateur », c’est sûrement quelque chose sur quoi les utilisateurs de Linux auraient leur mot à dire
    Plus généralement, cela ressemble beaucoup à la question que j’essayais d’aborder dans un texte écrit il y a quelques années, « Is Open Source a diversion from what users really want? ». L’enthousiasme pour les façons de « hacker » un logiciel sans toucher à son système de build semble bien plus fort que l’accès complet, ouvert et théoriquement infini qu’offre le FLOSS. Il y a des raisons évidentes à cela, mais c’est quand même un peu décevant
    J’en parlais ici en opposant l’approche scriptable mais en source fermée de Reaper et l’approche scriptable et open source d’Ardour : https://discourse.ardour.org/t/is-open-source-a-diversion-fr...

    • Je suis utilisateur de Linux, mais je ne suis pas d’accord. Ce n’est pas exactement le même problème. Si on le veut, on peut recompiler le noyau et recompiler aussi la plupart de l’espace utilisateur. Mais c’est pénible, surtout si on diverge de l’upstream et qu’il faut maintenir cette différence sur le long terme
      On peut faire des hacks intéressants avec des choses comme LD_PRELOAD, mais cela ne s’approche pas du tout de la flexibilité et de la facilité d’accès des extensions de navigateur. On a le droit de modifier tous les logiciels comme on le souhaite, mais dans la pratique la friction pour le faire reste relativement forte
    • Le passage de Linux à systemd a été une expérience très similaire au déclin des extensions de navigateur. Bien sûr, je peux encore changer le fonctionnement de mon ordinateur. Mais si je ne suis pas prêt à consacrer beaucoup d’efforts à maintenir ces changements, l’API que j’utilise se fait retirer sous mes pieds, et il devient de plus en plus difficile de faire en sorte que mon ordinateur fonctionne comme je le veux plutôt que comme quelqu’un d’autre l’a imaginé
    • Les extensions semblent être un moyen de contourner la signature de code, la distribution et la construction de marque. Ainsi, des navigateurs comme Chrome deviennent des plateformes pour distribuer et exécuter des logiciels
  • J’ai créé une extension Chrome recommandée sur le Chrome Web Store[1], et le nombre de demandes envoyées par des data brokers douteux qui veulent racheter mon extension pour la bourrer de spyware est vraiment inquiétant
    Un développeur naïf peut créer quelque chose de chouette, le vendre en pensant que quelqu’un d’autre s’en occupera, alors qu’en réalité cela peut mettre les utilisateurs en danger. Google semble plutôt bien examiner l’usage des autorisations, mais certaines extensions, comme la mienne, doivent avoir accès à tout sur la page. Il suffit d’imaginer ce qu’un data broker pourrait en faire. Il faut être prudent au moment de l’installation
    [1] https://chromewebstore.google.com/detail/css-selector-helper...

  • Ce qu’il faut avant tout, à mon avis, c’est un vrai view source pour les extensions de navigateur installées depuis le store. Il devrait être facile de voir le code source et d’extraire une extension dans un dossier.
    Il devrait aussi être facile de savoir à quelles pages web elle accède et ce qu’elle modifie. Le code minifié ou chiffré dans les extensions devrait être interdit, et le code devrait être très facile à lire. Par exemple, cette extension dit « enregistrer l’activité de l’utilisateur », mais il est difficile de comprendre concrètement ce que cela signifie : https://chromewebstore.google.com/detail/coffeelings/hcbddpp...

    • Dans Chrome, si on va sur chrome://extensions et qu’on active le mode développeur, on peut déjà voir le code source de n’importe quelle extension dans les devtools. Les content scripts sont déjà visibles dans les devtools d’une page web normale, même sans activer le mode développeur.
      La liste complète des sites web est visible dans la fenêtre d’installation de l’extension. Le Chrome Web Store interdit déjà l’obfuscation du code. La minification reste autorisée, car il n’existe pas vraiment de moyen pertinent d’imposer une qualité de nommage des variables
    • On peut voir le code source des extensions du Chrome Web Store sans même les installer. J’utilise parfois cet outil pour ça : https://robwu.nl/crxviewer/
      Ça n’aidera probablement pas face à du code volontairement obfusqué, mais ça reste utile pour des recherches sur la sécurité et la confidentialité de la plupart des extensions
  • Ce ne sont pas des extensions complètes, mais les userscripts et les styles utilisateur permettent déjà de faire pas mal de choses, et il existe des extensions qui permettent justement aux gens de les créer et de les utiliser dans le navigateur. Par exemple Tampermonkey[0] et Stylus[1].
    Même si on ne peut pas faire autant de choses qu’avec une extension, je trouve ça extrêmement important.
    [0] https://www.tampermonkey.net/
    [1] https://chrome.google.com/webstore/detail/stylus/clngdbkpkpe...

    • Les userscripts sont sous-estimés. Je m’en sers pour toutes sortes de choses. Par exemple, je corrige l’inutile page d’accueil de GitHub pour qu’elle m’envoie vers mes dépôts, je hardcode le domaine de mon instance pour que le bouton « follow » de Mastodon fonctionne, et je bloque dans les résultats Google des choses inutiles comme stackshare.
      Je m’en sers aussi pour rediriger la vue YouTube « short » vers la vue vidéo normale, et pour supprimer l’idiote marge vide à droite de la barre de défilement dans Gmail
  • Je ne fais pas de JavaScript/TypeScript, mais je pense être un power user qui programme, utilise énormément d’extensions, et n’utiliserait jamais un navigateur sans écosystème d’extensions Chrome/Firefox. J’ai aussi créé des thèmes pour Chrome et VSCode, et j’en suis toujours là. Si vous aimez le rose et le cyan, c’est ici : https://marketplace.visualstudio.com/items?itemName=mikejk8s...
    Rien qu’avec l’invite de Chrome, je n’ai absolument aucune idée de ce qu’une extension peut faire, lire, voir ou atteindre. « Autoriser l’accès aux données de tous les sites web », est-ce que ça veut vraiment dire toutes les données ? Même ce que je tape ? Est-ce qu’elle sait aussi quand je passe d’une URL à une autre ? Est-ce qu’elle ne lit que les assets ? Il existe des API Chrome qui limitent cet accès, et est-ce que je peux les voir ? Je ne sais même pas ce qui devrait réellement m’inquiéter.
    J’utilise une extension de zoom vidéo qui permet de zoomer sur n’importe quelle vidéo de n’importe quel site ; est-ce que je dois auditer moi-même chaque extension pour vérifier qu’elle n’envoie pas mes données quelque part ? Aucune idée, et comment un utilisateur non technique pourrait-il le savoir ?

    • À en croire l’intitulé, oui, c’est aussi mauvais que ça en a l’air. Donc, comme quelqu’un d’autre l’a dit, je ne fais confiance pour ce type d’accès qu’à quelques extensions essentielles comme uBlock ou Bitwarden.
      Je serais particulièrement prudent avec les produits de startup du genre enregistrement d’écran / de session. Ne serait-ce que parce qu’ils peuvent être particulièrement vulnérables aux attaques de la chaîne d’approvisionnement
    • Oui, c’est à ce point-là. J’ai écrit quelques webext, et quand on demande toutes les données, c’est vraiment toutes les données. En même temps, si on veut modifier quoi que ce soit sur une page, comment cela pourrait-il fonctionner autrement ?
      Du coup, je limite ma liste à des extensions jetables que j’ai moi-même créées, à de grosses extensions connues, ou à celles dont j’ai personnellement audité le code
  • Je préfère les bookmarklets. C’est plus facile à modifier, c’est inactif tant qu’on n’a pas cliqué dessus, ça fonctionne dans tous les navigateurs, ça marche aussi sur mobile, et ça s’intègre bien à l’interface.
    On peut les déplacer comme on veut, les mettre dans n’importe quel dossier de favoris, et même leur attribuer des raccourcis clavier. J’ai créé un éditeur qui facilite la conversion entre du code propre et des bookmarklets : https://www.gibney.org/bookmarklet_editor

    • Site assez utile. La dernière fois que j’ai touché aux bookmarklets, ça ne marchait pas dans Firefox pour Android, mais maintenant si. Ça pourrait m’être utile avec mon instance Node-RED.
      Je me demande s’il existe de bons bookmarklets à partager