1 points par GN⁺ 2024-03-09 | 1 commentaires | Partager sur WhatsApp
  • DontFuckWithPaste est une extension Google Chrome qui supprime le comportement par lequel les applications web bloquent le copier-coller dans les champs de saisie
  • Le projet estime que le fait d’obliger à saisir manuellement des valeurs comme une adresse e-mail ou celles issues d’outils comme 1Password augmente au contraire le risque d’erreur de saisie
  • L’utilisateur peut ajouter un site à la liste noire en cliquant sur l’icône de l’extension, puis modifier si nécessaire le motif généré automatiquement avant de l’enregistrer
  • Lorsque l’extension est activée dans l’onglet actuel, l’icône devient bleue, ce qui permet de vérifier son état d’activation ou de désactivation selon l’onglet
  • La version 2 utilise l’autorisation tabs afin que l’extension ne s’exécute que sur les sites problématiques, et la description des autorisations dans Chrome peut sembler plus large et inquiétante que le fonctionnement réel

Extension Chrome qui supprime le blocage du copier-coller

  • DontFuckWithPaste est une extension Google Chrome qui supprime le comportement par lequel les applications web empêchent le copier-coller de l’utilisateur
  • La responsabilité d’un mauvais collage d’adresse e-mail dans un champ de saisie incombe à l’utilisateur, et copier-coller une valeur depuis un outil comme 1Password peut générer moins d’erreurs que de saisir tous les caractères à la main
  • L’objectif de l’extension est simplement de supprimer les restrictions imposées par les sites web qui bloquent les événements de copier-coller

Mode d’utilisation

  • Le moyen le plus simple d’ajouter un site à la liste noire est de cliquer sur l’icône de l’extension
  • Il suffit ensuite de modifier si besoin le motif généré automatiquement, puis d’appuyer sur "Save"
  • Après l’enregistrement, si l’icône de l’extension apparaît en bleu, cela signifie que l’extension est activée dans l’onglet actuel

Changements et autorisations de la version 2

  • La version 2 est une mise à jour majeure de l’extension, qui facilite son exécution uniquement sur les sites qui gèrent mal les événements de copier-coller
  • Elle offre aussi une meilleure visibilité pour savoir, onglet par onglet, si l’extension est activée ou désactivée
  • L’autorisation tabs est nécessaire pour savoir à quel moment l’onglet actif change
    • Chrome décrit cette autorisation comme "can read and change all your data on websites you visit"
    • Le README précise que cette formulation peut sembler inquiétante, mais que l’extension ne fonctionne pas réellement de cette manière
  • Comme il s’agit d’un projet open source, les utilisateurs peuvent lire le code et vérifier comment l’extension fonctionne ainsi que ce qu’elle ne fait pas avec les données utilisateur
  • Davantage d’informations sur la mise à niveau vers la version 2 sont disponibles sur la page wiki

1 commentaires

 
GN⁺ 2024-03-09
Avis sur Hacker News
  • Bloquer la saisie utilisateur dégrade au contraire la sécurité de l’application. Si l’on ne peut plus copier un mot de passe, même les utilisateurs qui employaient au départ de bons mots de passe finissent par les remplacer par des mots de passe moins complexes, à cause de la contrainte de saisie
    Imposer une saisie complexe tout en empêchant l’utilisateur de coller une valeur correctement générée ruine aussi l’expérience utilisateur

    • Les systèmes qui imposent certains caractères posent aussi problème. Plutôt que des règles du type « doit contenir une majuscule, un chiffre et un caractère spécial », je préfère générer un mot de passe plus long, même avec des caractères ordinaires. C’est plus facile quand il faut parfois le taper à la main
      Pire encore : limiter les types de caractères spéciaux autorisés. Il faut alors rééditer le mot de passe déjà généré pour en retirer seulement certains caractères
      Est-ce vraiment si difficile d’afficher plutôt la robustesse du mot de passe et de guider l’utilisateur avec quelque chose comme « utilisez davantage de caractères, par exemple quatre mots » ?

    • L’utilisateur a de fortes chances de ne pas se souvenir des règles spécifiques de cette interface, car il ne les utilise pas souvent, et il finira donc par essayer d’abord de faire une copie dans le presse-papiers

    • Je suis globalement d’accord sur le fait qu’il faut laisser les utilisateurs utiliser les fonctions auxquelles ils sont habitués, mais l’habitude de copier-coller des identifiants rend plus vulnérable au phishing
      Les gestionnaires de mots de passe intégrés à Firefox et Chrome ne saisissent pas par erreur des identifiants sur des sites sosies, alors qu’un utilisateur peut très bien le faire

  • Pour offrir une expérience aussi fluide que possible, l’extension doit savoir quand l’onglet actif change. Pour être informée de cet événement, elle a besoin de l’autorisation tabs, que Chrome décrit ainsi : « peut lire et modifier toutes vos données sur les sites Web que vous consultez ». Cette description est très inquiétante, mais ce n’est absolument pas ce que fait réellement cette extension. Comme il s’agit d’un projet open source, vous pouvez à tout moment lire l’intégralité du code et vérifier comment cette extension fonctionne, ainsi que ce qu’elle ne fait pas avec vos données utilisateur
    Le problème, c’est que même si vous avez lu le code, ou si vous faites confiance à quelqu’un pour l’avoir lu, rien ne garantit que ce sera toujours le cas lors de futures mises à jour. La conscience de l’auteur peut faiblir avec le temps, ou il peut vendre l’extension
    Les extensions Chrome se mettent à jour automatiquement, à ce que je sache, et même si ce n’était pas le cas, cette extension devrait rappeler qu’il ne faut pas considérer les mises à jour comme sûres par défaut

    • Le problème, c’est qu’il n’existe pas de modèle d’autorisations alternatif pour faire cela. J’ai essayé quelques extensions, et souvent elles ne peuvent rien faire sans un accès complet en lecture/écriture à toutes les pages
      Par exemple, il existe une extension qui permet de faire un clic droit sur une image pour la faire pivoter de -90/+90/180 degrés. Tout ce qu’on voudrait, c’est que le navigateur signale la présence d’une balise image, mais cette option n’existe pas
      Au final, il faut soit intégrer dans le code une liste blanche par page, soit demander à l’utilisateur de créer une liste blanche pour chaque page, soit demander un accès complet en lecture/écriture à toutes les pages Web qu’il visite

    • L’auteur explique aussi clairement que possible quelles autorisations sont nécessaires et pourquoi, et ces raisons tiennent à des facteurs qu’il ne contrôle pas ; la réaction me paraît donc trop cynique
      Techniquement, c’est vrai. Plus tard, il pourrait faire n’importe quoi
      Mais cette attitude mérite quand même d’être reconnue plutôt que critiquée

    • Je ne sais pas pourquoi l’article original a mis un lien vers un fork plutôt que vers l’original. L’original propose une version bookmarklet utilisable comme alternative
      https://github.com/jswanner/DontF-WithPaste?tab=readme-ov-fi...

    • On peut éviter ce problème en téléchargeant le code source de l’extension puis en utilisant « Charger l’extension non empaquetée » dans le mode développeur des extensions Chrome. On peut alors être certain que l’extension ne changera pas en douce
      Cela dit, je ne donne pas à cette extension les autorisations sur tous les sites ; je ne l’active que site par site

    • C’est pour cela que j’utilise le gestionnaire de paquets système pour installer et mettre à jour les extensions de navigateur
      Si l’extension de navigateur dont j’ai besoin n’est pas dans le dépôt de paquets, je contribue moi-même le paquet et j’assume la responsabilité de sa vérification continue et de sa maintenance

  • Pour contourner ce problème, sur Mac, je colle généralement le texte dans un champ comme la barre d’URL, puis je le fais glisser-déposer
    Mais bloquer le collage au nom de la sécurité est l’une des choses les plus stupidement absurdes qui soient, juste derrière les délais d’expiration beaucoup trop courts
    J’aimerais pouvoir rencontrer en personne les gens qui prennent ce genre de décisions

    • On m’a déjà forcé à implémenter une déconnexion automatique au bout de 30 minutes sur un site Web où il était difficile de considérer qu’il y avait des données sensibles. La raison : un prestataire externe de test d’intrusion avait signalé comme problème l’absence de délai d’expiration court
      Pour montrer au client un rapport de test d’intrusion validé, nous n’avions pas d’autre choix que de suivre toutes les conclusions. Tout le monde savait que c’était une exigence idiote, mais la direction ne nous a laissé aucune option autre que l’implémentation

    • Voici un parcours absurde que j’ai vécu récemment sur login.gov. Mon gestionnaire de mots de passe avait un identifiant enregistré ; je ne m’en souvenais pas, mais il fonctionnait. Ensuite, le site m’a demandé un code d’application d’authentification, mais aucune de mes apps d’authentification n’avait d’entrée login.gov
      J’ai cliqué sur « se connecter autrement », et cette autre méthode consistait aussi à utiliser une application d’authentification. En cliquant sur « vous ne pouvez pas recevoir de code ? », le site m’a indiqué qu’il fallait supprimer le compte
      En cliquant sur la suppression du compte, il m’a envoyé un e-mail, lequel disait d’attendre 24 heures avant de recevoir un autre e-mail de suppression de compte. Au bout de 24 heures, j’ai reçu l’e-mail permettant de supprimer le compte
      Je ne sais pas ce qu’il y avait dans ce compte. Vu son usage de connexion, cela pouvait sembler sensible ; mais si c’est à ce point sensible et important, pourquoi l’action la plus destructrice, la suppression du compte, est-elle possible ? Pourquoi peut-on supprimer le compte uniquement par e-mail, mais pas recevoir un code d’authentification ?

    • Même MS Remote Desktop n’autorise pas le collage
      À quoi pensent-ils que servent les gestionnaires de mots de passe ?

  • Sur Mac, j’utilise Hammerspoon et j’ai configuré le raccourci Cmd+Shift+V pour qu’il tape réellement les caractères au lieu de coller. Ça marche toujours quand quelqu’un fait ce genre de chose
    hs.hotkey.bind({"cmd", "shift"}, "V", function() hs.eventtap.keyStrokes(hs.pasteboard.getContents()) end)

    • Sous Windows, je fais la même chose avec AutoHotkey. C’était aussi utile quand l’interface graphique d’une connexion distante utilise par défaut le presse-papiers distant, ou dans des contrôles d’anciennes applications desktop qui ne prennent pas en charge le collage
  • Keyboard Maestro est aussi une excellente appli pour ce genre de tâche, et ajoute un délai approprié entre les frappes pour éviter les comportements étranges. Environ 0,05 seconde.

    • Sous Windows, je fais la même chose avec AHK, en utilisant aussi le même raccourci. Mais j’ajoute un petit délai d’environ 10 à 50 ms entre chaque frappe. Sinon, la saisie peut parfois se retrouver corrompue.

    • Je l’ai aussi ajouté, mais dans mon souvenir Cmd+Shift+V signifie « coller sans mise en forme », donc j’utilise option au lieu de shift
      -- https://news.ycombinator.com/item?id=39640745
      hs.hotkey.bind({"cmd", "alt"}, "V", function()
      hs.eventtap.keyStrokes(hs.pasteboard.getContents())
      end)

    • Cette méthode corrige aussi l’interception de saisie excessive de Google Sheets.

  • On ne devrait pas avoir à faire confiance à un add-on pour ça ; cela devrait être configurable dans le navigateur
    Dans Firefox, on peut basculer dom.event.clipboardevents.enabled.

    • Ce serait bien de pouvoir désactiver uniquement l’événement « coller ». Dans les outils de travail, les boutons du type « cliquez pour copier cette valeur » sont très utiles, et c’est dommage de perdre cette fonction chaque fois qu’on désactive les événements du presse-papiers pour éviter les sites malveillants.

    • D’après mon ressenti, ce réglage casse la fonction de collage dans certaines applications web, par exemple certains émulateurs de terminal ou éditeurs de texte.

    • Si l’on maintient Shift enfoncé au moment du clic droit, on peut aussi forcer l’ouverture du menu.

    • À une époque, ce réglage cassait le copier/coller dans Google Docs. Je n’ai pas réessayé depuis un moment, donc c’est peut-être corrigé maintenant.

  • Moi aussi, je déteste quand les sites empêchent de coller, donc cette extension est la bienvenue. C’est particulièrement vrai pour la confirmation de numéros de compte, de numéros de routage ou d’adresses e-mail, et cela casse aussi les gestionnaires de mots de passe. Implémenter des règles de mots de passe complexes au nom de la lutte contre les mots de passe faibles, puis empêcher le collage, c’est évidemment agaçant
    Mais il m’est aussi arrivé d’implémenter directement ce genre de mesure de sécurité dans une application web. J’ai reçu l’exigence, je l’ai implémentée, et j’ai demandé au client pourquoi il fallait le faire alors que « tout le monde » sait que c’est mauvais pour l’expérience utilisateur et largement contre-productif pour la sécurité
    La réponse était la conformité. Il fallait réussir un audit de sécurité et prouver à de gros clients ou à des assureurs que l’on disposait de mesures de sécurité conformes aux standards du secteur
    Malheureusement, les banques ne se soucient pas des 2 % de personnes qui utilisent un gestionnaire de mots de passe. Les autres continuent à mémoriser leurs mots de passe, à les oublier, et à en plaisanter comme si on était encore en 2003.

    • On dit « il faut le faire pour la conformité », mais est-ce vraiment le cas ?
      Je n’ai jamais vu d’exigence de conformité qu’il soit impossible de contester raisonnablement. Ce n’est que le résultat de la rencontre entre des consultants conformité excessivement zélés et des équipes qui se soucient peu des utilisateurs. Les gens ne remettent rien sérieusement en question.

    • Notre audit de conformité PCI nous a reproché de ne pas avoir désactivé l’autocomplétion dans les champs du formulaire de connexion. Ce n’est pas exactement la même chose que désactiver le collage, mais on va dans cette direction
      Personnellement, les sites qui m’empêchent d’utiliser un gestionnaire de mots de passe (Bitwarden), je les abandonne tout simplement.

    • Si les contournements du blocage du collage se répandent trop largement, ces mêmes sites finiront par implémenter des claviers virtuels
      Si c’est trop facile pour les utilisateurs d’écrans tactiles, l’étape suivante sera peut-être une souris virtuelle qui clique sur le clavier virtuel. Pour distinguer les humains des ordinateurs, ils pourraient même rendre aléatoire l’accélération de la souris.

  • Une alternative déjà publiée ici par le passé : un bookmarklet
    [1] : https://bookmarkl.ink/ashtonmeuser/6e3869d8e468e016f22a4b4de...

    • Les bookmarklets sont vraiment sous-estimés. Pour ce problème, c’est une solution simple et, plus important encore, lisible.
  • Quand le collage ne fonctionne pas, je fais généralement clic droit → inspecter l’élément, puis j’écris $0.value="value from clipboard" dans la console. Ça marche presque partout
    Toucher au collage ressemble à la désactivation de l’autoremplissage, et le standard HTML5 explique assez clairement quand il faut le désactiver : « lorsqu’il s’agit d’une valeur particulièrement sensible (par exemple un code d’activation d’arme nucléaire), ou d’une valeur qui ne sera jamais réutilisée (par exemple une clé à usage unique pour une connexion bancaire) ».

    • Cette partie ressemble à une erreur du standard qui nuit à la sécurité. Quel est l’argument ? Que les doigts humains font moins d’erreurs qu’un gestionnaire de mots de passe ?
      Le seul cas auquel je pense est celui d’un malware qui modifie la valeur du presse-papiers pour tromper l’utilisateur et lui faire coller une mauvaise valeur. Mais si l’on ouvre ce scénario, un malware a toutes sortes de moyens de jouer avec les champs de saisie manuelle aussi.
  • L’interception de Ctrl-F est du même niveau.

    • Un raccourci qui a un sens dans le navigateur peut avoir un sens totalement différent dans une autre application. Comme ces applications deviennent de plus en plus souvent des applications web, des conflits de raccourcis peuvent apparaître
      Prenons Google Docs : quand on appuie sur Ctrl-F dans un document ou une feuille de calcul, veut-on la recherche du navigateur ou celle de l’application ? La plupart des utilisateurs veulent la recherche de l’application. Quand on lit un site d’actualité, on s’attendra généralement à la recherche du navigateur
      Cela veut dire qu’il y a toujours des exceptions aux règles strictes. En revanche, pour le problème de copier/coller du texte d’origine, il n’y a pas d’exception : ne manipulez pas mon presse-papiers pour des absurdités de marketing ou de suivi.

    • Il existe aussi des cas à moitié légitimes que l’on peut justifier. Par exemple, quand on consulte une base de données Notion, le Ctrl-F standard est presque inutile : la recherche dans le document doit récupérer les résultats via l’API Notion et parfois trouver aussi des résultats liés aux éléments affichés à l’écran
      Je dis « à moitié » parce qu’en réalité, j’aimerais que ce soit mappé sur un autre raccourci. Mais je comprends l’argument selon lequel l’utilisateur peut vouloir le remapper
      Au fond, cela découle du choix initial de traiter les documents de cette façon. À la frontière entre applications en ligne et pages web, le débat devient compliqué.

    • J’ai récemment découvert qu’après une interception, appuyer une seconde fois sur Ctrl-F fait apparaître le champ de recherche du navigateur
      Je ne me souviens plus de quel site il s’agissait, mais le champ de recherche qui avait intercepté le raccourci affichait une infobulle signalant ce comportement. J’ai essayé avec la recherche Redocly pour voir si ça marchait aussi ; il n’y avait pas d’infobulle, mais ça a fonctionné
      Je ne sais pas si cela marche partout, ou si c’est une fonctionnalité non documentée de l’interface Redocly qui ne fonctionne pas là où les développeurs n’ont pas prévu cette attention
      L’environnement était Chrome + OSX ou Windows.

  • Je ne comprends pas pourquoi les navigateurs autorisent les sites web à remplacer leurs propres raccourcis clavier. Il aurait probablement fallu du code supplémentaire, au contraire, pour que ça fonctionne correctement
    Par exemple, Linear intercepte Cmd+F et propose quelque chose de médiocre à la place de la recherche intégrée du navigateur, qui se comporte de la même façon partout. C’est le même Linear qui semble penser qu’on ne peut pas ne pas vouloir d’édition Markdown WYSIWYG

    • La documentation de l’API de Stripe fait ça, et c’est vraiment agaçant. Ça fige mon M2 MacBook Pro pendant quelques secondes
      J’ai du mal à croire qu’en 2024 on ne puisse toujours pas simplement faire un grep dans la documentation
  • D’autres ont-ils remarqué que l’article original partageait un fork sans amélioration significative par rapport au dépôt d’origine, et qu’il a reçu 399 upvotes ?

    • L’auteur du dépôt d’origine a refusé la PR de prise en charge de Firefox, c’est donc pour ajouter 6 lignes au manifeste que le propriétaire du fork l’a créé
      https://github.com/jswanner/DontF-WithPaste/pull/29
      Cela dit, je reconnais que la modification sans rapport de .gitignore n’avait pas sa place dans la PR d’origine

    • Celui-ci est pour Firefox et l’autre pour Chrome, donc c’est peut-être une mise à niveau assez significative

    • J’ai l’impression que les upvotes viennent davantage d’un « oui, moi aussi je déteste ce genre de choses » que d’un « merci pour l’outil utile »

    • Le fork sert à la prise en charge de Firefox, et pour quelqu’un qui n’utilise pas Chrome à la base, je considère que c’est une amélioration significative. Le dépôt d’origine est facile à trouver, mais trouver un fork précis sur GitHub est bien plus pénible
      Si ça dérange tant que ça, la prochaine fois je garderai l’info pour moi. Il n’y aura aucune raison de signaler quelque chose d’intéressant aux autres personnes sur HN

    • Exact. Par rapport au dépôt parent, il n’y a que 3 fichiers modifiés, et les seuls changements sont .gitignore et l’URL mise à jour vers le dépôt forké