Lyon : Journée autour de Piwigo, galerie photo web

Posté par (page perso) . Modéré par Bruno Michel.
Tags :
7
20
jan.
2010
Internet
Le samedi 6 Février 2010 dans les locaux de l'INSA à Lyon, l'équipe Piwigo vous invite à une journée de découverte de son logiciel de galerie photo pour le web.

Ce PiwigoCamp abordera les thèmes suivants : installation et premiers pas avec Piwigo, personnalisation, extensions (greffons). Les présentations seront illustrées d'exemples concrets, et les évolutions futures évoquées à travers la feuille de route. Une séance de questions/réponses permettra aux visiteurs d'exposer leurs points de vue. Et les repas du midi et du soir permettront de faire plus ample connaissance, dans une ambiance conviviale, tout en discutant photo et web !

L'entrée est libre et gratuite. Pour nous aider dans l'organisation, merci de suivre les recommandations sur la page dédiée à l'évènement sur le site de Piwigo. Depuis maintenant 8 ans, Piwigo est développé par une communauté active d'utilisateurs et de développeurs ; gratuit et opensource, il est utilisé partout dans le monde par des utilisateurs aux profils très diversifiés, du photographe amateur pour ses photos de famille, au professionnel gérant plusieurs dizaines de milliers de photos avec accès privé personnalisé pour chacun de ses clients. Cette adaptabilité repose sur une navigation intelligente à travers des catégories, des mots-clés ou un calendrier. Conservez toute la maîtrise de vos images, et gérez vous-mêmes l'accès à vos photos, leur organisation et leur présentation. De nombreuses extensions font de Piwigo un produit facilement personnalisable et particulièrement évolutif pour publier vos photos.

Piwigo aujourd'hui, c'est : 20 membres dans l'équipe, 18 langues disponibles, 15.000 téléchargements par mois, 250 extensions téléchargées 20.000 fois chaque mois, plus de 130.000 messages en 6 langues (dont le français) écrits par les 5.000 membres des forums, 4.500 révisions dans le dépôt de code source, un nombre d'installations à travers le monde estimées à plusieurs dizaines de milliers.
  • # Sécurité ?

    Posté par (page perso) . Évalué à 4.

    Ça serait pas mal de faire une relecture/audit de sécu sur le code entretemps parce que là, y'a du boulot...

    $query = '
    UPDATE '.COMMENTS_TABLE.'
    SET validated = "true"
    , validation_date = NOW()
    WHERE id = '.$_GET['validate'].'
    ;';


    OUTCH ! (dans comments.php)

    « Je vois bien à quels excès peut conduire une démocratie d'opinion débridée, je le vis tous les jours. » (Nicolas Sarkozy)

    • [^] # Re: Sécurité ?

      Posté par . Évalué à 2.

      Salut,
      explique un peu, ou est le soucis.
      je connais pas php aussi bien que toi...
      Guillaume
    • [^] # Re: Sécurité ?

      Posté par (page perso) . Évalué à 3.

      Bonjour Bohwaz :-)

      C'est dommage de ne pas regarder la ligne juste au-dessus:

      check_input_parameter('validate', $_GET['validate'], false, PATTERN_ID);

      Bonne fin de journée :-)
      • [^] # Re: Sécurité ?

        Posté par (page perso) . Évalué à 4.

        Ah effectivement mauvais exemple (même si c'est pas très propre ni très explicite, et y'a filter_*/is_numeric en natif pour ça, voir (int) $var) mais j'en ai d'autres, suffit de lire le code pour en voir :

        $feed_id= isset($_GET['feed']) ? $_GET['feed'] : '';
        ...
        $query = '
        SELECT user_id,
        last_check
        FROM '.USER_FEED_TABLE.'
        WHERE id = \''.$feed_id.'\'
        ;';

        (feed.php)

        « Je vois bien à quels excès peut conduire une démocratie d'opinion débridée, je le vis tous les jours. » (Nicolas Sarkozy)

        • [^] # Re: Sécurité ?

          Posté par (page perso) . Évalué à 2.

          OK, en effet pour celui-là, il y a faille par injection SQL (dans feed.php). Il est coutume de prévenir en privé des failles de sécurité dans le projets opensource :-) Si tu en vois d'autres, n'hésites pas à nous le signaler par le formulaire de contact : http://fr.piwigo.org/contact (ou encore mieux, un bug dans le bugtracker http://piwigo.org/bugs ) On va sortir rapidement la 2.0.8 du coup, plus tu trouves de bugs de ce type, mieux c'est. Merci pour ta contribution.

          Pour la façon de gérer le contrôle des paramètres en entrée, pour l'avoir codé, je sais que is_int ou is_numeric ou un cast sur la variable aurait été plus efficace (c'est anecdotique en l'occurence), mais le comportement de is_numeric/is_int ne me convient pas (pas assez strict), et je voulais un système générique car des fois on passe une liste d'identifiants numériques par exemple. Là je peux utiliser la même fonction, en changeant juste le pattern (une regex). Enfin, c'est du détail d'implémentation, l'essentiel c'est que 1) le mécanisme existe 2) il soit utilisé.
          • [^] # Re: Sécurité ?

            Posté par (page perso) . Évalué à 2.

            Il faut relire tout le code, j'en ai vu d'autres des trucs suspects, mais j'ai pas trop le temps de vérifier que c'est exploitable. Là en l'état pour moi ça semble pas sûr.

            Pour le coup de la méthode, y'a pire mais là garder $_GET directement dans la requête est pas clair, ça donne pas confiance au premier coup d'oeil, même si oui il y a un truc avant (la preuve : je l'ai pas vu ^^). Sinon les objets c'est bien aussi, un jour :)

            « Je vois bien à quels excès peut conduire une démocratie d'opinion débridée, je le vis tous les jours. » (Nicolas Sarkozy)

            • [^] # Re: Sécurité ?

              Posté par (page perso) . Évalué à 2.

              Je suis d'accord que garder le $_GET, c'est pas idéal car comme tu le soulignes, ça ne donne pas confiance. Pour autant le cas du $feed_id donne davantage confiance d'emblée, mais ce n'est pas davantage sécurisé.

              Pour les objets, on a de plus en plus de programmation orienté objet dans Piwigo. C'est progressif et cela n'a pas encore atteint les paramètres d'entrée HTTP. Nous avons commencé à regarder du côté du principe Poka-Yoke pour la gestion de ces paramètres de manière plus stricte.

              http://www.nexen.net/articles/dossier/15024-le_filtrage_poka(...)

              Note : cette dépêche peut aussi servir à discuter du PiwigoCamp à Lyon le 6 février 2010
              • [^] # Re: Sécurité ?

                Posté par (page perso) . Évalué à 1.

                Ce n'est pas tant le nom mais plutôt l'usage qui est contestable. Le principe Poka-Yoke est un principe qui a souvent fait des ravages en PHP : magic_quote_gpc en est un avatar.

                L'article que tu lie a d'ailleurs introduit un joli bogue, et une erreur de conception de base (si les exemples n'étaient pas pris comme parole d'évangile, ça ne me dérangerais pas, mais ce code sera certainement copier-coller bêtement dans un projet quelconque).

                J'espère que vous avez prévu des séances de révision de code pour le camp :p Et on est sur DLFP, on est pas vendredi mais quand même.
                • [^] # Re: Sécurité ?

                  Posté par (page perso) . Évalué à 1.

                  > Le principe Poka-Yoke est un principe qui a souvent fait des ravages en PHP [...]
                  > copier-coller bêtement dans un projet quelconque


                  "bêtement" et "quelconque" ce n'est pas très positif comme vocabulaire. Peu importe, merci pour ces recommandations. Tu sembles être sensible et connaisseur du sujet, si tu peux nous donner des infos sur "comment faire ça bien", ce serait encore mieux :-)

                  > J'espère que vous avez prévu des séances de révision de code pour le camp :p
                  Absolument pas. Pas pour cette première édition en tout cas. On a orienté cette journée sur la présentation du logiciel, du projet, et la rencontre entre les utilisateurs et l'équipe.

                  >Et on est sur DLFP, on est pas vendredi mais quand même.
                  Ah ? et donc sur DLFP, on ne peut pas aborder les sujets d'utilisation du logiciel ? si on ne devait aborder que les sujets d'implémentation technique, j'irai sur developpez.com
          • [^] # Re: Sécurité ?

            Posté par . Évalué à 0.

            Moi, j'ai plutôt tendance à ne pas échapper mes paramètres de requêtes et à laisser la couche de dessous le faire. Ainsi, l'échappement des valeurs n'est pas éparpillé mais se fait à UN SEUL endroit. Et pas de pré-échappement qui fait que l'on se retrouve à manipuler des données avec des guillemets dans tous les sens - on veut manipuler les valeurs, pas une représentation des valeurs. Les requêtes préparées sont un exemple:

            $r = prepare('INSERT INTO table (field1, field2) VALUES (?, ?)');
            $r->execute($value1, $value2);

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.