Aujourd'hui la tribune a reçu de terribles tremblements, en effet, une faille d'amplitude sismique élevée tellement sa trivialité fait peur aux yeux, a permis de se rendre compte que ce site est codé avec les pieds :
Aujourd'hui la tribune a reçu de terribles tremblements, en effet, une faille d'amplitude sismique élevée tellement sa trivialité fait peur aux yeux, a permis de se rendre compte que ce site est codé avec les pieds :
# explications ?
Posté par erdnaxeli (site web personnel) . Évalué à 2.
C'est pas que j'ai rien compris mais presque. Il y a une image pas belle certes, et ?
Il existe deux catégories de gens : ceux qui divisent les gens en deux catégories et les autres.
[^] # Re: explications ?
Posté par Anonyme . Évalué à 8.
C'est que tu as de la chance que ce soit une image et pas du javascript qui récupère tes cookies linuxfr.org.
[^] # Re: explications ?
Posté par Bruno Michel (site web personnel) . Évalué à 2.
Tu ne peux pas récupérer simplement les cookies avec un javascript. Ils sont en
httpOnly
.[^] # Re: explications ?
Posté par z . Évalué à -1.
Euh, un petit script avec document.cookie et document.location, je ne vois pas ce qu'il y a de très compliqué pour envoyer sur une url pirate les cookies
[^] # Re: explications ?
Posté par Bruno Michel (site web personnel) . Évalué à 4.
Ça ne va pas marcher pour les cookies de LinuxFr.org qui sont en HttpOnly et ne dont donc pas accessibles avec du javascript.
Pour rappel, http://tools.ietf.org/html/draft-ietf-httpstate-cookie-21#section-4.1.2.6 indique :
[^] # Re: explications ?
Posté par Anonyme . Évalué à 1.
Avec un peu d'imagination, on peut d'une part faire changer le mot de passe du compte, et d'autre part faire poster un message sur la tribune permettant à l'attaquant d'identifier les comptes compromis, et ainsi de se loguer avec.
[^] # Re: explications ?
Posté par Bruno Michel (site web personnel) . Évalué à 5.
Il y a besoin de rentrer le mot de passe actuel pour le changer, le cookie ne suffit pas. Par contre, tu peux effectivement poster sur la tribune.
[^] # Re: explications ?
Posté par erdnaxeli (site web personnel) . Évalué à 5.
Ok je n'avais pas vu ton pseudo, j'ai compris. Effectivement pour être de la faille stupide c'est de la faille stupide.
Il existe deux catégories de gens : ceux qui divisent les gens en deux catégories et les autres.
[^] # Re: explications ?
Posté par bubar🦥 (Mastodon) . Évalué à 3.
l'avatar comme pseudo. avec ça y au moins moyen de péter toutes les mises en page. fatche j'ai peur :)
[^] # Re: explications ?
Posté par monde_de_merde . Évalué à 4.
Tu fais de la mauvaise foi.
Avec une balise <script> au lieu d'un balise img, ça pourrait faire plus que de péter une mise en page.
# Et XKCD alors ?
Posté par windu.2b . Évalué à 10.
Obligé de tout faire soi-même !
Tout part à vélo, ma bonne dame...
[^] # Re: Et XKCD alors ?
Posté par Michaël (site web personnel) . Évalué à -2.
Bravo, c'est un de mes préférés!
# ça c'est la classe
Posté par sirrus . Évalué à 3.
c'est quand même mieux que les navetars moisis !
je votre contre la résolution de cette faille !
[^] # Re: ça c'est la classe
Posté par Bruno Michel (site web personnel) . Évalué à 10.
Trop tard, c'est déjà corrigé.
[^] # Re: ça c'est la classe
Posté par calandoa . Évalué à 4.
C'est bizarre, j'ai toujours les avatars chez moi!?
[^] # Re: ça c'est la classe
Posté par gaaaaaAab . Évalué à 6.
deux petites règles dans adblock Plus et c'est réglé :)
|https://linuxfr.org/avatars/*
|https://linuxfr.org/images/default-avatar*
Tiens, tout mon savoir faire en formattage de commentaire linuxfr est obsolète.
Tapis.
[^] # Re: ça c'est la classe
Posté par Gniarf . Évalué à 4.
à force de voir du gravatar partout, j'ai bloqué ça. partout.
[^] # Re: ça c'est la classe
Posté par Bruno Michel (site web personnel) . Évalué à 3.
Va sur http://linuxfr.org/compte/modifier et coche la case « Ne pas afficher les avatars » :p
[^] # Re: ça c'est la classe
Posté par Christophe Turbout . Évalué à 1.
merci pour cette fonctionnalité qui m'avait échappé ...
du coup j'en ai profité pour l'utiliser :D
[^] # Re: ça c'est la classe
Posté par Kerro . Évalué à -1.
Un bug fait que ça ne fonctionne pas le 1er avril de certaines années.
Une règle Adblock évite le bug. Et si le bug se reproduit tout de même par excès de zèle (modification du chemin des avatars par exemple), Adblock est facilement modifié, alors que je n'ai pas la possibilité de corriger le bug volontaire de linuxfr.
# Suivi
Posté par Bruno Michel (site web personnel) . Évalué à 9.
Pour info, il y a également une entrée de suivi sur le sujet : http://linuxfr.org/suivi/petit-probleme-daffichage-du-login-dans-la-tribune et la faille en question vient d'être corrigée avec https://github.com/nono/linuxfr.org/commit/3ba7867634a29723771d8f1c6e5e5017e4fde9c8
[^] # Nouvelle faille? cette fois dans le RSS
Posté par ZeroHeure . Évalué à 3.
Peut-être une nouvelle faille, mais dans le flux RSS: mon lecteur (akregator) affiche la photo - en taille originale - en lieu et place du pseudo. Pas très agréable. Ça vient peut-être d'akregator, mais dans le doute...
"La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay
[^] # Re: Nouvelle faille? cette fois dans le RSS
Posté par Bruno Michel (site web personnel) . Évalué à 7.
Je viens de relire la RFC sur ATOM et, sauf erreur de ma part, akregator ne devrait pas interpréter le HTML (et donc afficher l'image) pour l'élément
author
. Je t'encourage à remonter ce problème aux auteurs d'akregator.# On voit d'où vient la fôte
Posté par Zarmakuizz (site web personnel) . Évalué à 4.
Ça a été réalisé sous Windows ! Vite, il faut résoudre la faille !
Commentaire sous licence LPRAB - http://sam.zoy.org/lprab/
# Ruby pour les nuls
Posté par Calvin0c7 . Évalué à 3.
Moi kini connait rien en ruby, ça fait quoi de faire @user_name = h @user_name ?
[^] # Re: Ruby pour les nuls
Posté par Bruno Michel (site web personnel) . Évalué à 3.
h
est une méthode fournie par Ruby on Rails qui sert à échapper un contenu HTML. Il remplace <, > et & par les entités HTML correspondantes, ce qui évite les attaques XSS.[^] # Re: Ruby pour les nuls
Posté par __o . Évalué à 1.
Sans oublier les quotes :)
Les données sont enregistrées échappées ? Pourquoi ne pas le faire à l'affichage ? C'est pas la vue qui devrait se charger de ce genre de choses ? (et le moteur de template le fait pas automatiquement ?)
[^] # Re: Ruby pour les nuls
Posté par Thrillseeker . Évalué à 1.
C'est pour l'optimisation. C'est inutile d'échapper tout le temps la donnée si elle peut l'être qu'une seule fois au moment de la sauvegarde. En particulier pour les longues chaines de caractères comme un journal et un commentaire¹ destinées à être exclusivement utilisées en étant échappées.
Cela me rappelle un passé très lointain où les forums phpbb et invision étaient comparés et il était dit dans l'article quelque chose du genre: Mais qui peut être aussi fou d'échapper à chaque fois les même données (c'était phpbb). A l'époque où les systèmes de cache étaient peu utilisé, le gain en charge CPU pour un grand forum était vraiment non négligeable.
Quant au modèle MVC, c'est bien la vue qui est censée faire cela, mais ici c'est un cas particulier pour une optimisation. Les rares framework que j'ai pu voir échappent bien par défaut les données, sauf si on les oblige à ne pas le faire pour certaines données précises. Donc la "vue" sait que ce genre de cas arrive et l'autorise.
¹ On parle d'username dans ce sujet mais sans savoir d'où vraiment la ligne de code sort, donc je ne m'avance pas plus.
[^] # Re: Ruby pour les nuls
Posté par __o . Évalué à 1.
Heu dans ce cas précis ok, mais la phrase est tournée comme si ça s'appliquait en général ;-)
Dans le cas général c'est juste une fausse bonne idée, on se retrouve à jongler avec des données dont on ne sait plus trop lesquelles sont échappées ou pas, pour quoi elles sont échappées, etc. En plus un fonction d'échappement html c'est un remplacement de 4 caractères dans une chaîne, c'est pas une fonction coûteuse.
[^] # Re: Ruby pour les nuls
Posté par pasScott pasForstall . Évalué à -7.
D'ou l'interet de nomme judicieusement les champs des objects. Beaucoup se foutent de java et de ses nom des methodes demsurement long, mais au moins entry.getCommentsHTMLEscaped(), ca laisse pas de doute.
T'en es si sur que ca?
Meme si ta chaine fait 10 000 de long et que tu la sert 1000 fois par seconde? Ou pire, si elle fait 100 de long mais uqe t'en sert 100 a la fois, 1000 fois par secondes?
Comment t'html-escaoe qq chose comme: <img src="plop" width="42" height="42" onload="alert.show('Attention derriere toi! un singe a trois tete!')"/>
ou
<a href="du cul du cul du cul">Un site sur les bebe phoques</a>
tu remplace just les angles brackets par des & lt; & gt;?
Ou tu dumpes tout sauf le src pour image?
Pour le a tu fais comment?
Et si le html est mal forme, mais suffisament bien pour etre interprete par un browser?
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Ruby pour les nuls
Posté par Bruno Michel (site web personnel) . Évalué à 3.
Il faut quand même faire attention aux utilisations futures. Les méthodes pour échapper un contenu ne sont pas les mêmes pour une sortie en HTML, un flux RSS ou ATOM ou si le contenu va se retrouver dans javascript ou JSON (cas d'un widget exportable par exemple). C'est aussi une mauvaise idée que de vouloir échapper les < et > d'un identifiant (la personne serait obligée de taper l'entité HTML correspondante pour s'identifier).
Je n'ai pas fait ça pour optimiser le temps CPU mais pour éviter de dupliquer la logique d'échappement entre la vue normale en HTML et les mises à jour envoyées via le daemon Board.
[^] # Re: Ruby pour les nuls
Posté par Bruno Michel (site web personnel) . Évalué à 3.
Oui.
Parce que ce n'est pas aussi simple que ça en a l'air.
Si.
Si, aussi.
Mais la tribune est un cas particulier, les messages qui y sont postés sont poussés aux navigateurs via une technique de long-polling en passant par un daemon intermédiaire (
Board
). Du coup, pour éviter d'avoir à échapper deux fois les mêmes champs (une fois pour l'affichage normal et une fois pour le rafraichissement automatique en JS), je préfère faire ça en amont.C'est un choix discutable mais, pour le moment, je privilégie la non-duplication du code à la pureté idéologique.
[^] # Re: Ruby pour les nuls
Posté par __o . Évalué à 1.
ok en effet ici c'était pas une mauvaise idée :)
[^] # Re: Ruby pour les nuls
Posté par JGO . Évalué à 4.
Si tu parles le perl, c'est comme q($user_name). Si tu parles ni le perl ni le ruby, tu peux lire : http://www.railsrocket.com/the-mysterious-h-function
# Ça serait pas arrivé avec django...
Posté par oao . Évalué à 1.
Et oui, Django a l'échappement automatique ! Bienvenue au XXIème siècle !
Et en plus avec Django vous avez un vrai langage et pas un pseudo-perl !
</troll>
[^] # Re: Ça serait pas arrivé avec django...
Posté par Bruno Michel (site web personnel) . Évalué à 10.
Rails 3 a aussi de l'échappement automatique. Il n'empêche qu'il arrive parfois que l'on contourne ça pour de bonnes raisons (ou des mauvaises).
Ici, le problème était de ma faute et aurait eu lieu aussi bien avec Django qu'avec Rails.
Ha, ils ont abandonné Python ?
[^] # Re: Ça serait pas arrivé avec django...
Posté par Michaël (site web personnel) . Évalué à 1.
Oui ils ont abandonné Python pour passer à OCaml et rebaptisé Django en Ocsigen.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.