Données privées en cache : Firefox répond à Twitter
Le 06 avril 2020 à 09h20
1 min
Logiciel
Logiciel
La semaine dernière, Twitter publiait des explications sur certaines données privées mises en cache dans Firefox. La découverte était récente et le service s’était adapté pour en tenir compte.
Mais le phrasé était particulier et donnait l’impression que Firefox était à blâmer. Pourtant, c’est bien Twitter qui présentait ses excuses et avait modifié le code de son côté pour que l’incident ne se reproduise pas.
Dans un billet, Mozilla s’explique : il n’y a aucune erreur dans Firefox. Le navigateur a sa manière de mettre les données en cache, que les éditeurs doivent prendre en compte. Twitter semble n’avoir découvert que tardivement la possibilité d’interdire à certaines données d’y être placées (directive no-store
).
Pour les intéressés, l'un des développeurs de Firefox a publié des explications plus complètes dans un billet séparé.
Le 06 avril 2020 à 09h20
Commentaires (28)
Vous devez être abonné pour pouvoir commenter.
Déjà abonné ? Se connecter
Abonnez-vousLe 06/04/2020 à 09h06
“Site optimisé pour IE6 Chrome”
Le 06/04/2020 à 09h29
Et la communauté francophone a traduit le billet de la fondation samedi 04 Avril:
https://blog.mozfr.org/post/2020/04/Ce-que-vous-devez-savoir-Twitter-Firefox
Peut-être que le billet technique sera traduit plus tard.
Le 06/04/2020 à 10h08
C’est totalement prévisible maintenant que tous les navigateur tourne sous blink/chrome. Qu’est ce que l’on va s’en faire chier sur des spécificité d’un navigateur minoritaire là où une solution facile fonctionne très bien sur la majorité des navigateur.
Et je le rappelle, les “standards du web” ne font pas loi, c’est que des recommandations de la W3C qui n’a aucune autorité légale là dessus.
Le 06/04/2020 à 10h19
Ok younger
Le 06/04/2020 à 10h23
Le 06/04/2020 à 10h26
Le message sur Twitter était clairement tourné sur “c’est la faute à Firefox” ! Et dire que la plupart des utilisateurs va le croire " /> C’est vraiment pas fair play de la part de Twitter.
Le 06/04/2020 à 10h45
Si j’ai bien compris la conclusion du billet de blog de Mozilla, c’est bien parce que, dans le cas présent, il ne s’agit pas d’un standard que Twitter s’est trompé.
En fait, si j’en crois Wikipedia, Microsoft, Google, Apple, Opera font partie, comme Mozilla, du consortium W3C, donc ces éditeurs édictent et obéissent aux standards de la W3C qui a donc valeur d’autorité normative de ce fait (en tout cas pour ce qui les concerne).
Le 06/04/2020 à 12h24
Ce que je viens de dire, c’est qu’il n’y a pas de standard.
Si demain Chrome décide de publier ses propres recommandations, ces recommandation auront autant d’autorité légale que celle de la W3C. Cependant avec les parts de marché de Chrome et dérivé on peut leur reconnaitre une autorité “naturelle”.
C’est le principe même de fonctionnement d’internet, ce n’est que des propositions, tu acceptes de les suivre où pas, tu fais ce que tu veux. Dans un tel fonctionnement, en tant que développeur, la majorité fait foi de règle. Tu développes donc d’abord avec Blink/Chrome, puis, si tu as le temps et les moyens, tu testes et corriges pour que ça passent sur les autres moteurs plus minoritaire (ce qui peut prendre énormément de temps). Et en tant que développeurs, le temps, c’est une ressource que tu n’as pas forcément. Et du coup, c’est malheureux, mais firefox passe à la trappe.
De ce que je lis, c’est Firefox qui dit “ouai, mais faut pas utiliser le cache pour faire ça, il faut utiliser les fonctions prévu pour ça que l’on retrouve dans la doc de la W3C” (après, il ne disent pas forcément si c’est simple à mettre en œuvre). Ce n’est même pas dit si le comportement du cache des autres navigateur est contraire au recommandation de la W3C (a priori, ce n’est pas spécifié). Donc les navigateurs ne sont pas en cause non plus.Chacun gère son cache à sa manière.
Le 06/04/2020 à 13h06
Non, “internet” ne veut pas dire qu’on fait ce qu’on veut. Internet, ça veut dire au moins respect de la RFC791, sinon ce n’est plus internet.
Quant à Google, ils sont membres du W3C, donc ils s’engagent à en respecter les préconisations.
Le 06/04/2020 à 14h42
C’est exactement ce qu’il s’est passé à l’époque d’IE5/6 et on a vu les dérives que cela a donné. C’est comme ça qu’on avait des sites optimisés pour IE et inutilisable ailleurs que sous Windows. Le principe des standards du W3C c’est que ça doit être possible de créer son propre navigateur, et que le standard ne soit pas dicté par une seul est une société qui souffle le chaud et le froid. Et c’est un peu ce qu’il risque d’arrivé avec Blink (Chrome).
Pour rappel, à la base Blink est un fork de Webkit, parce que Google trouvait qu’il n’avait pas assez son mot à dire sur les évolution de WebKit qui est aux mains d’Apple. Et Apple avait la même chose avec KHTML.
Voilà, on a une seul fondation qui arrivent à avoir un navigateur viable, qui se concentre avant tout sur le respect de ses utilisateurs (ce qui n’est pas le cas de Google). Après si toi tu veut faire le minime d’effort, je te propose de mettre sur tes sites : « optimisé pour Chrome » (j’aurais l’impression de revenir dans les années 2000).
Le 06/04/2020 à 15h56
Tu as l’air de considérer que Google, malgré le fait de participer activement au W3C, serait capable de refuser occasionnellement un standards qu’elle a participé à établir, en vertu du privilège de la force de
Le 06/04/2020 à 16h04
Le RFC que tu donnes décrit entre autre un paquet internet. Et parmi les détails, je vois que l’adresse est en IPV4 (32bit/4octets), du coup l’IPV6 ne respectant pas cette RFC, ce n’est pas internet ? Après, effectivement, c’est assez difficile d’utiliser le réseau si tu ne respecte pas un minimum ces normes car la très grande majorité du matériel (et des logiciels) sont construits suivant cette norme (après, le matos ne fait pas un check de la validité du header, il va juste extraire l’info qu’il a besoin, tant que tu respectes ce minima, tu dois pouvoir passer)
Ensuite, Pour Google/Chrome qui proposerait ses propres recommandations pour le web, c’est une expérience de pensée pour montrer que la W3C n’est pas absolus en ce qui concerne les recommandation du web et qu’une société comme Google peut tout à fait, avec l’autorité “naturelle” de sa domination quitter la W3C et imposer ses propres recommandations. Personne ne pourra rien dire.
Ensuite, ici c’est les développeurs de Twitter qui ont utilisé un comportement du cache de Chrome comme une fonctionnalité. Or a priori, aucune recommandation n’a été faite sur ce comportement, ce n’est pas “standard” mais ce n’est pas interdit non plus. Chrome serait ici clean.
Et du coup, je retombe sur le fait que comme ça fonctionne par propositions, si t’es développeurs, tu cherches le bon compromis entre rapidité/efficacité de développement et de supporter le maximum de client.
Par exemple une question classique, c’est comment gérer javascript : faut-il considérer que le client l’a sur son navigateur ?
Le 06/04/2020 à 16h17
Si j’en crois le billet de blog de Mozilla, c’est Twitter qui n’a pas pris en compte un standard du web. Je cite : « la gestion de cache est complexe et chaque navigateur se comporte un peu différement. De la façon particulière dont Twitter a configuré son site, Chrome, Safari et Edge ne mettent pas ces données en cache, mais Firefox si. La différence de comportement des navigateurs est tout simplement normale. Une méthode standard permet de s’assurer que les données ne sont pas mises en cache, mais jusqu’à récemment Twitter ne l’utilisait pas. »
Tu me répondras peut-être que Mozilla et Twitter se renvoient la balle et que c’est un peu facile d’accuser l’autre de faire une erreur. Tu me diras peut-être aussi que ce n’est pas un hasard si Chrome, Safari et Edge fonctionnent de la même manière puisque ces navigateurs utilisent le même moteur de rendu (ou quasiment le même). Mais même en partant de l’hypothèse que Firefox est isolé dans son fonctionnement si singulier, peux-tu m’expliquer pour quelle raison Google, Apple et Microsoft s’échineraient à participer au W3C si c’est pour obéir à un fonctionnement différent d’un standard édicté (où est l’intérêt? ça me semble être un comportement paradoxal, une “dissonance cognitive” comme diraient d’autres).
Le 06/04/2020 à 17h07
Moi je le vois bien l’intérêt : s’assurer des faveurs du publics en mettant en avant qu’on participe aux standards, et mettre en difficulté la concurrence quand ça marche pas chez eux alors qu’ils respectent les standards…
Le 06/04/2020 à 17h14
Euh, le public, il s’en fiche des standards, il ne sait même pas que ça existe.
Le 06/04/2020 à 17h19
Le public au sens large, avec les développeurs web. Qui du coup, pour certains, croient que si ça marche sous chrome, alors ça respecte les standards.
Le 06/04/2020 à 17h37
C’est un exercice de pensée je rappelle que Schrödinger n’a torturer aucun chat.
C’est pourtant exactement ce qui est dit : Twitter a utiliser un comportement indéfini (faut-il encore savoir que ce comportement est indéfini) et ça ne pose aucun problème pour la très vaste majorité des utilisateurs ce que Mozilla a répondu qui oui mais non, ce n’est pas comme ça qu’il faut faire selon la W3C.
En effet, si tu as déjà développé, tu fais souvent du code de manière empiriques : tu testes, ça fonctionne comme tu souhaitse, bon, ben ok, ça passe. Comme tu le dis, internet c’est complexe (putain la dernière fois que j’ai fait du web, je me suis pris la t^te tellement c’était le bordel), tu ne peux pas forcément tout connaître, et donc si tu trouve un façon de faire qui fonctionne (après avoir testé une vingtaine de solutions trouvées sur stackoverflow), tu acceptes que ça fonctionne ainsi et que c’est normal jusqu’au jour où ça ne fonctionne pas.
Et là j’en viens au soucis de productivité. SI tu bosses en SSII, si ce n’est pas dans le cahier des charge, ne le fait pas, tu ne gagneras rien à le faire. Firefox c’est 7% du marché, est-ce que c’est rentable de supporter à 100% ce navigateur ? bien souvent ça passe à peut prêt bien, c’est pratiquement invisible, c’est souvent sur des fonctionnalités bien poussées, un petit catch d’erreur et tu passe ça sous le tapis ni vue ni connus ça fait l’affaire.
Par exemple ici, les utilisateurs de Firefox n’ont pas été inpacté dans leur utilisation de Twitter, le site fonctionnait parfaitement bien. Le seul soucis, c’était que si tu éteignais ton navigateur (qui ferme son navigateur aujourd’hui ?) ben le cache qui aurait du être supprimé ne l’est pas. Là en tant que dev, tu as 3 possibilité : tu t’en fout, tu trouve une solution propre (à priori c’est ce qui a été fait) où à defaut un bidouillage pour que ça passe. Dans ce dernier cas, si aucune solution n’était trouvable (ce qui n’est pas le cas ici), Twitter aurait pu tout à fait supprimer l’utilisation du cache sur firefox pour les données sensibles, ça aurait fait le taf à 100%, Twitter aurait alors été juste moins rapide sur firefox. Mais bon, on s’en branle, firefox c’est très minoritaire, et ça fonctionne quand même très bien.
Le 06/04/2020 à 18h17
Les standards du W3C n’ont rien à voir avec la choucroute en question.
Il s’agit d’un oubli de Twitter sur le mécanisme de cache de HTTP 1.1 (RFC 7234) : ils n’incluaient pas la directive “no-store” dans l’entête “cache-control” des DMs. Du coup, Firefox les mettaient en cache localement, puisqu’il avait le droit de le faire.
La gestion du-dit cache est pour le coup de la responsabilité du développeur du navigateur, mais Mozilla n’est pas en faute cette fois-ci
Le 06/04/2020 à 18h55
Le 07/04/2020 à 00h21
Le 07/04/2020 à 09h11
Le 07/04/2020 à 10h00
Le 07/04/2020 à 13h55
Oui, mais les spec d’HTML/Javascript sont toujours ouverte aussi (après, je me rappelle d’acid test sur lequel même avec des spec ouvertes aucun navigateur n’y arrivait)
Mais comme j’ai dit, même si PDF c’est ouvert, ça permet de créer des PDF simple correct, mais je ne sais pas s’il existe beaucoup de bibliothèque capable d’utiliser l’intégralité des spécificité de ce format. En tout cas les lecteurs PDF capables de les exploiter sont rares, voir il n’existe que celui d’Adobe
Par exemple on peut avoir de la 3D interactive comme dans ce PDF, firefox et sumatra PDF disent niet.
Pour les DRM (et plus exactement les EME), ça ne semble pas poser de problème pour firefox. Et il me semble que c’est justement passer par la W3C selon le protocole normal prévu et pas par la pression d’un unique acteur comme Google. Justement, ça montre que même le système actuel permet ce genre de chose.
AMP : les spécs sont toujours open source et disponible gratuitement (bonjour C++) tout comme PDF que tu cites plus haut.
Dart : je ne sais pas ce que ça vaut. Personnellement, tout ce qui pourrait remplacer javascript ne peut pas être pire que javascript (je n’ai pas encore croisé IRL quelqu’un qui aime javascript). Sinon, j’ai rien à dire là dessus. Je sais aussi que MS développe Typescript qui lui est transcompilé en javascript et de ce que j’ai cru comprendre, ça fait son petit bout de chemin.
Le 10/04/2020 à 09h10
Le 12/04/2020 à 10h58
Ce n’est pas un problème qui arrivait en navigation privée. Dans ce cas, le cache est bien détruit à la fermeture de la fenêtre : Using Private Browsing means that cached data is not stored to permanent storage and any cache is discarded when the window is closed.
Le problème venait bien de Twitter qui n’utilisait pas de directive demandant de ne pas mettre en cache ces données.
Le 16/04/2020 à 08h35
Le 16/04/2020 à 08h36
La navigation privée n’a rien à voir dans l’histoire.
Cf la traduction en français:
https://blog.mozfr.org/post/2020/04/Details-techniques-messages-prives-de-Twitte…
Le 17/04/2020 à 08h50
Au temps pour moi, merci ;)