HTML5 et Local Storage : quand Chrome, IE et Safari  saturent votre disque

HTML5 et Local Storage : quand Chrome, IE et Safari saturent votre disque

Avec des Lolcats en plus !

Avatar de l'auteur
Sébastien Gavois

Publié dans

Logiciel

04/03/2013 3 minutes
42

HTML5 et Local Storage : quand Chrome, IE et Safari  saturent votre disque

Feross Aboukhadijeh, un jeune développeur de 22 ans, vient de dévoiler une faille au niveau de l'implémentation du Local Storage de certains navigateurs. En effet, dans certains cas, il est possible d'écrire des données jusqu'à saturer complètement le disque dur... sauf si le navigateur plante avant évidemment.

html5

 

Ce n'est pas la première fois que Feross Aboukhadijeh s'illustre. En effet, il est déjà à l'origine de la mise en évidence de la faille sur l'API Fullscreen de HTML5. Cette fois, c'est sur celle dédiée au stockage d'informations qu'il s'est penché : Local Storage.

Les navigateurs limitent la capacité du Local Storage...

Comme le préconise le World Wide Web Consortium (W3C) dans sa Candidate Recommandation concernant le Web Storage, les navigateurs ont mis en place une limite sur l'espace de stockage alloué aux différents sites. Elle varie suivant les cas et serait de 2,5 Mo pour Chrome, 5 Mo pour Firefox et Opera et 10 Mo pour Internet Explorer. Aucun souci sur ce point, tout fonctionne visiblement comme prévu.

 

En effet, le problème se situe sur la gestion des sous-domaines : a1.example.com, a2.example.com, a3.example, etc. Ce point est d'ailleurs abordé par le W3C qui met en garde sur cette possibilité de « contourner la limite de stockage ». En effet, il suffit de rester dans la limite définie par le navigateur, mais de les multiplier à l'infini afin de pouvoir stocker des données sans restriction.

... mais sous Chrome, IE et Safari il est possible de contourner les restrictions

Et dans la pratique, Chrome, Internet Explorer et Safari semblent touchés par ce souci et laissent un unique site saturer entièrement le stockage disponible... ou presque. En effet, il n'est pas rare que Chrome plante avant que l'on en arrive à cette étape.

 

Notez qu'un site spécialement conçu pour l'occasion a été mis en place à cette adresse. Mais attention, votre navigateur risque de ne pas beaucoup aimer cette expérience. Vous pouvez évidemment cliquer sur le bouton « Stop the Madness! » pour annuler toutes les opérations d'écriture en cours.

 

Internet Explorer Filldifk

Exemple avec Internet Explorer 10 : 2,7 Go utilisés. De son côté, Chrome avait déjà planté depuis longtemps.

Firefox et Opera : les bons élèves de la classe

Avec Firefox 19 et Opera 12.14 les choses se passent différemment. En effet, dans le cas du navigateur de Mozilla, Feross Aboukhadijeh précise que la gestion du Local Storage se fait de manière « plus intelligente » (sans plus de précisions), tandis que, d'après nos constations, Opera demandera une autorisation à l'utilisateur une fois arrivé aux alentours de 70 Mo. Étrangement, aucune confirmation n'a été demandée lors d'une session privée.

 

Ces bugs ont bien entendu été signalés aux différentes sociétés proposant les navigateurs concernés. Gageons que des correctifs arriveront rapidement.

Écrit par Sébastien Gavois

Tiens, en parlant de ça :

Sommaire de l'article

Introduction

Les navigateurs limitent la capacité du Local Storage...

Commentaires (42)


The internet is made of cats, and that’s a fact.




The Joys of HTML5



C’est exactement çà <img data-src=" />




Ce n’est pas la première fois que Feross Aboukhadijeh s’illustre

L’est féroce, le bougre. <img data-src=" /><img data-src=" />





——————&gt;[_]


Je n’ai pas bien compris… La limite est gérée par sous-domaine et pas par domaine, c’est ça ?


“Le browser HTML5 sera le plus gros cheval de Troie dans l’histoire de l’informatique.”



Prédiction de Madame Irma, voyante astrocomputologue.




dans le cas du navigateur de Mozilla, Feross Aboukhadijeh précise que la gestion du Local Storage se fait de manière « plus intelligente »





Firefox a juste implémenté LocalStorage correctement, la limite se fait par domaine, et non par sous-domaine comme précisé dans la spec.








127.0.0.1 a écrit :



“Le browser HTML5 sera le plus gros cheval de Troie dans l’histoire de l’informatique.”



Prédiction de Madame Irma, voyante astrocomputologue.





Remboursez ! Quand je paye une voyante, c’est pour qu’elle me dise des choses que j’ignore.









Feross a écrit :





  • Apple bug report (on an unoffical site, since Apple doesn’t acknowledge their bugs publicly. So lame.)



    • How do I file a bug on IE? Their bug report page is broken. Microsoft bug report (requires login)

    • Opera bug report (bug ID: DSK-383073, it’s private)





      <img data-src=" />







      127.0.0.1 a écrit :



      “Le browser HTML5 sera le plus gros cheval de Troie dans l’histoire de l’informatique.”



      Prédiction de Madame Irma, voyante astrocomputologue.





      C’est tout le souci des décrets d’application (comment les éditeurs implémentent les specs). Ça veut pas dire qu’il faut jeter le bébé avec l’eau du bain mais entre le rêve vendu sur le papier et la réalité…

      Cela dit, en l’état actuel de l’art, oui <img data-src=" />












tchevalier a écrit :



Firefox a juste implémenté LocalStorage correctement, la limite se fait par domaine, et non par sous-domaine comme précisé dans la spec.





Ceux qui ont spécifié Local Storage n’ont pas pensé aux blogs : a1.example.com, a2.example.com est quelque chose de courant.









tchevalier a écrit :



Firefox a juste implémenté LocalStorage correctement, la limite se fait par domaine, et non par sous-domaine comme précisé dans la spec.







Ça peut-être gênant pour les sites type monsite.free.fr par exemple.



Édit : grillé :P









WereWindle a écrit :



<img data-src=" />





C’est tout le souci des décrets d’application (comment les éditeurs implémentent les specs). Ça veut pas dire qu’il faut jeter le bébé avec l’eau du bain mais entre le rêve vendu sur le papier et la réalité…

Cela dit, en l’état actuel de l’art, oui <img data-src=" />







  • Opera bug report (bug ID: DSK-383073, it’s private)

    C’est le vrai ID du bug report ? <img data-src=" /> Oh le gros cochon qui remplit le disque en en mettant partout !!









psn00ps a écrit :



Ceux qui ont spécifié Local Storage n’ont pas pensé aux blogs : a1.example.com, a2.example.com est quelque chose de courant.







La spec précise que le navigateur doit proposer à utilisateur de faire de la place pour ce domaine si la limite est atteinte. Ok, c’est pas la solution optimale, mais entre ça et se faire remplir son disque <img data-src=" />



IE6 est touché ?



Pensons au personnel des grandes bureaucraties (privées et publiques)








tchevalier a écrit :



Firefox a juste implémenté LocalStorage correctement, la limite se fait par domaine, et non par sous-domaine comme précisé dans la spec.







Juste une petite précision la limitation par domaine n’est pas obligatoire dans les specs, c’est une recommandation (un SHOULD). Et ça a son importance les verbes must, may, shall, should etc ne sont pas utilisés au hasard (cf RFC2119).





Feross Aboukhadijeh précise que la gestion du Local Storage se fait de manière « plus intelligente »





Il est vendu aux libristes. C’est un attentat des libristes, je vous le dis.



Méchant, méchant libriste. <img data-src=" />








tchevalier a écrit :



La spec précise que le navigateur doit proposer à utilisateur de faire de la place pour ce domaine si la limite est atteinte. Ok, c’est pas la solution optimale, mais entre ça et se faire remplir son disque <img data-src=" />





Je suppose qu’ils ne le font pas pour le moment, sinon on ne parlerait pas de remplissage et de plantages… Aie aie aie.









bzc a écrit :



Juste une petite précision la limitation par domaine n’est pas obligatoire dans les specs, c’est une recommandation (un SHOULD). Et ça a son importance les verbes must, may, shall, should etc ne sont pas utilisés au hasard (cf RFC2119).







Mozilla a interprété la spécification d’une façon différente des autres éditeurs qui s’est avérée plus appropriée. Mieux ?









wanou2 a écrit :



IE6 est touché ?



Pensons au personnel des grandes bureaucraties (privées et publiques)





Dredi c’était y’a 3 jours.



et hop le double post <img data-src=" />








psn00ps a écrit :



Ceux qui ont spécifié Local Storage n’ont pas pensé aux blogs : a1.example.com, a2.example.com est quelque chose de courant.





C’est aussi bien que ça soit ainsi : imagine le problème avec des sites malicieux créant autant de sous domaines virtuels à la volée dans le seul but de saturer ta machine …



C’est pas nouveau, j’ai eu le problème en developpant une web app avec phone gap sous android / ios il y a un an… si j’avais su j’aurais balancer l’info ^^








127.0.0.1 a écrit :



“Le browser HTML5 sera le plus gros cheval de Troie dans l’histoire de l’informatique.”



Prédiction de Madame Irma, voyante astrocomputologue.







Il va avoir beaucoup de mal a rattraper le plug-in Java <img data-src=" />









NeVeS a écrit :



Il va avoir beaucoup de mal a rattraper le plug-in Java <img data-src=" />





En parlant de notre cher ami, il cherche à se mettre à jour tous les jours depuis une semaine, pour ensuite me dire qu’il est déjà à jour… <img data-src=" />



Sinon, <img data-src=" /> Opera




J’ai désactivé le webstorage sur Opera depuis le début et ça empêche aucun site de fonctionner.



A part être des cookies plus chiant à effacer je vois pas l’intérêt immédiat <img data-src=" />








tchevalier a écrit :



Mozilla a interprété la spécification d’une façon différente des autres éditeurs qui s’est avérée plus appropriée. Mieux ?







Nah, ils ont juste décidé de pas faire les feignasses et ont regardé plus loin que les “must”…



En général, ne pas regarder que les must permet aussi de saisir l’intention derrière la norme et d’anticiper ses évolutions. ça permet d’avoir une analyse plus juste dès le départ et d’éviter de devoir jeter des brouettes de code quand la norme évolue.









le-gros-bug a écrit :



J’ai désactivé le webstorage sur Opera depuis le début et ça empêche aucun site de fonctionner.



A part être des cookies plus chiant à effacer je vois pas l’intérêt immédiat <img data-src=" />





Tu verras l’intérêt pour les jeux en HTML5 par exemple pour stocker les données du joueur. C’est très utile aussi en fonctionnement offline.









Meowcate a écrit :



The internet is made of cats, and that’s a fact.





and ponies!!!









NeVeS a écrit :



Il va avoir beaucoup de mal a rattraper le plug-in Java <img data-src=" />







Java, Flash, activeX… nan, y a du monde à se battre pour cette place là, c’est loin d’être gagné d’avance pour le HTML 5 <img data-src=" />



j’ai utiliser le site en question pour voir la saturation du disque dur par la faille, et bien ça ma fait planter google chrome au bout de 980 mo sur un Windows 7 64 bits:



http://imageshack.us/photo/my-images/405/capture3cd.jpg/





<img data-src=" />




Étrangement, aucune confirmation n’a été demandée lors d’une session privée.



Il n’y a que moi qui voit dans cette phrase un gros sous-entendu sur la raison majeure d’utiliser une session privée ? <img data-src=" /><img data-src=" />








psn00ps a écrit :





  • Opera bug report (bug ID: DSK-383073, it’s private)

    C’est le vrai ID du bug report ? <img data-src=" /> Oh le gros cochon qui remplit le disque en en mettant partout !!





    <img data-src=" />









tchevalier a écrit :



Mozilla a interprété la spécification d’une façon différente des autres éditeurs qui s’est avérée plus appropriée. Mieux ?





Opera semble avoir aussi procédé différemment des autres éditeurs, en allouant 5Mio de stockage par site mais en fixant aussi un quota global de stockage local (100 Mio par défaut via opera:config#PersistentStorage|GlobalQuotaForlocalStorage ) pour éviter la saturation d’un disque.

Opera demandera l’autorisation d’augmenter le quota site/global si nécessaire et permet aussi facilement (sans extension) d’accéder (pour suppression ciblée éventuelle) à la liste des sites ayant stocké là dedans (avec indication de taille). Je sais pas si c’est mieux que quoi non plus, mais c’est pas trop mal pensé à priori <img data-src=" />









Citan666 a écrit :



Il n’y a que moi qui voit dans cette phrase un gros sous-entendu sur la raison majeure d’utiliser une session privée ? <img data-src=" /><img data-src=" />





En session privée, Opera ne stocke pas ce genre de données sur disque (contrairement à Chrome par exemple) donc ne gère pas de quota non plus. Par contre, comme il a l’air d’utiliser la mémoire vive à la place, il y aura des risques de saturation à un moment ou un autre, sur un exploit de ce type…



Pour info voici la musique sur Youtube :http://www.youtube.com/watch?v=2Z4m4lnjxkY


Yahoooo je suis avec mon petit FireFox <img data-src=" />








HarmattanBlow a écrit :



Remboursez ! Quand je paye une voyante, c’est pour qu’elle me dise des choses que j’ignore.







La séance est non remboursable.



Voilà, elle a dit quelque chose que tu ignorais. <img data-src=" />



C’est exactement l’exemple que l’utilisation d’un seul moteur de rendu peut être problématique.


Doc_Nimbus&gt;C’est surtout l’exemple de l’utilité de l’implémentation de draft : voir les failles avant qu’elles ne soient normées.








ra-mon a écrit :



En session privée, Opera ne stocke pas ce genre de données sur disque (contrairement à Chrome par exemple) donc ne gère pas de quota non plus. Par contre, comme il a l’air d’utiliser la mémoire vive à la place, il y aura des risques de saturation à un moment ou un autre, sur un exploit de ce type…





Ah ok, merci de la précision. Je pensais que c’était plutôt l’inverse, stocker sans limite les vidéos visionnées pour faciliter leur récupération…<img data-src=" /><img data-src=" />



sous IE 10/32bits, le remplissage ne dépasse pas les 2go (environ). test effectué sous Win 7/64bits.


Nous sommes servis ; Applets Java, Applets Flash, IFRAME, PDF, JavaScript, Active X, et maintenant HTML 5. Va falloir revenir aux browsers en mode “texte” <img data-src=" />