Partage
  • Partager sur Facebook
  • Partager sur Twitter

faille xss htmlspecialchars

    19 septembre 2019 à 15:57:11

    bonjour

    je ne comprends pas bien en quoi ça peut gener le programmeur les failles xss.

    on m'a toujours dit de mettre es htmlspecialchars a l'affichage pour se proteger des failles xss.

    par exemple si dans un formulaire une personne rentre en prenom :

    <script>alert('hello world');</script>

    ben a chaque fois qu'on va afficher le prenom il y aura une alert avec le message qui va s'afficher.

    mais moi en tant que programmeur je m'en fou si l'utilisateur du site veut faire planter sa page web.

    tant qu'il ne peut pas modifier ma bdd et donc ne derange pas les autres utilisateurs il peut faire ce qu'il veut... et faire planter ça page web s'il veut

    • Partager sur Facebook
    • Partager sur Twitter
      19 septembre 2019 à 16:03:47

      Et la tu as mis une map google map et le mec as fais un script qui charge et décharge une map. Au bout de 24h je te dis pas le prix que tu va payer.

      Et s'il mets ça comme prénom et que c'est un autre user qui affiche son profil c'est cet utilisateur qui sera embêter et voir pire si le hack arrive à prendre bien plus.

      Ou carrément faire planter le pc en faisant des boucles style forkbomb.

      Bref, éviter cette faille est simple.

      • Partager sur Facebook
      • Partager sur Twitter
        19 septembre 2019 à 16:09:29

        oui ok je vois

        mais htmlspecialchars intervient à l'affichage.

        si je stocke des infos en bdd, dans la base il y aura le texte brute.

        il n'y pas moyen de proteger directement dans la bdd pour ne pas à avoir à le protéger à l'affichage ?

        parce que si le prenom je l'affiche disons 100 fois sur le site je dois faire 100 htmlspecialchars alors que sinon j'aurais juste pu faire juste une protection en l'inserant dans la bdd

        • Partager sur Facebook
        • Partager sur Twitter
          19 septembre 2019 à 17:07:41

          Bonjour,

          Mise à par le fait qu'un utilisateur fasse planter sa page, ou ajoutes des fonctionnalité payantes, la faille xss permet aussi d'usurper le compte de quelqu'un (voir d'un admin du site) et d'avoir accès à des fonctionnalités sensible (genre le back office du site par exemple).
          Ou même plus simplement, il pourrai rediriger les utilisateurs vers une copie de ton site ou les utilisateurs serai inviter à se reconnecter afin de récupérer leurs identifiants...


          • Partager sur Facebook
          • Partager sur Twitter
            19 septembre 2019 à 17:33:29

            Bonjour,

            Tu peux en effet éviter ce problème aussi en contrôlant ce que tu laisses mettre en BDD, mais pas avec htmlspecialchars().

            Par exemple pour un prénom on peut imaginer que tu n'autorises que les lettres.

            • Partager sur Facebook
            • Partager sur Twitter
              19 septembre 2019 à 17:36:36

              > pour un prénom on peut imaginer que tu n'autorises que les lettres.

              Mais arrêtez de vouloir régenter les données des gens… https://shinesolutions.com/2018/01/08/falsehoods-programmers-believe-about-names-with-examples/

              • Partager sur Facebook
              • Partager sur Twitter

              Pas d'aide concernant le code par MP, le forum est là pour ça :)

                19 septembre 2019 à 17:46:41

                Pour moi, le mieux, si tu veux pas mettre htmlspecialchars() à chaque affichage , c'est encore de faire une fonction d'affichage faisant l'htmlspecialchars comme ça tu appels ta fonction et tu fais rien d'autre.
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  19 septembre 2019 à 18:08:36

                  Remplacer un appel de fonction par un appel à une autre fonction fallait oser :p

                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 septembre 2019 à 19:12:10

                    Lamecarlate a écrit:

                    > pour un prénom on peut imaginer que tu n'autorises que les lettres.

                    Mais arrêtez de vouloir régenter les données des gens… https://shinesolutions.com/2018/01/08/falsehoods-programmers-believe-about-names-with-examples/

                    Excellent, j'ai surtout aimé le passage sur le Klingon.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 septembre 2019 à 19:19:32

                      MatTheCat a écrit:

                      Remplacer un appel de fonction par un appel à une autre fonction fallait oser :p


                      Je vois pas en quoi, tu peux faire ça:

                      function myPrint(string $string) {
                          echo htmlspecialchar($string);
                      }

                      ça fait 13 caractères de moins à taper.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        19 septembre 2019 à 21:27:53 - Message modéré pour le motif suivant : Aucune formule de politesse de base


                          20 septembre 2019 à 10:21:53

                          Luzwitz a écrit:

                          parce que si le prenom je l'affiche disons 100 fois sur le site je dois faire 100 htmlspecialchars 

                          quenti77 a écrit:

                          Oua trop cool. Sinon appel ta fonction p comme ça c'est plus court xd.


                          Très constructif comme réponse, j'imagine que tu as une meilleur solution du coup?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            20 septembre 2019 à 10:40:15

                            Oui utiliser htmlspecialchars directement. Car ce que tu fais est pire que ce qu'il veut. Lui il veut pas faire 100 foit un call à htmlspecialchars et toi tu propose de faire 100 fois un call à une fonction qui call htmlspecialchars donc au final tu call 100 fois htmlspecialchars quand même.

                            Au final c'est du bon sens pur là.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              20 septembre 2019 à 10:46:17

                              On se calme ... Essayez de vous comprendre ... et surtout merci d'éviter les posts inutilement narquois ...

                              coolswing propose une fonction d'affichage du type "sanitize", une fonction qui permet d'éviter de répéter un ensemble de fonction (ici 2 : htmlspecialchars et echo (même si echo n'est pas une fonction à proprement parler) mais ce pourrait être plus) lorsque l'on veut afficher une donnée de manière sécurisée ... Pour rappel de nombreux Framework PHP (ou autre langage) propose ce genre de fonctions ...

                              -
                              Edité par Benzouye 20 septembre 2019 à 10:47:38

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                                20 septembre 2019 à 10:49:45

                                Et je dirais que faire un echo dans une fonction est pas bon non plus.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  20 septembre 2019 à 11:01:29

                                  Développe ?

                                  Le framework de WordPress, même s'il n'est pas exemplaire, propose deux fonctions pour la plupart des données : une pour l'afficher et une pour récupérer la valeur ( the_content et get_the_content par exemple ).

                                  -
                                  Edité par Benzouye 20 septembre 2019 à 11:04:38

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                                    20 septembre 2019 à 11:12:13

                                    Même si le psr dit should et pas must voici ce qui est mis sur le PSR-1 : https://www.php-fig.org/psr/psr-1/

                                    > Files SHOULD either declare symbols (classes, functions, constants, etc.)or cause side-effects (e.g. generate output, change .ini settings, etc.) but SHOULD NOT do both.

                                    Et j'ai toujours apris comme ça perso même avant le php.

                                    Edit: si je prends twig par exemple. La méthode render va renvoyer la chaîne et non faire de l'affichage. Pareil pour blade.

                                    -
                                    Edité par quenti77 20 septembre 2019 à 11:16:42

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      20 septembre 2019 à 11:29:13

                                      Je comprends les conséquences (sous entendues par ton dernier message) de ce mélange des genres entre la "vue" et le "contrôleur" ...

                                      Personnellement j'aime bien PHP: The right Way, et l'on peut y lire :

                                      // An example wrapper to allow you to escape data to html
                                      function escape_to_html($dirty){
                                          echo htmlspecialchars($dirty, ENT_QUOTES, 'UTF-8');
                                      }

                                      Je trouve très pratique d'avoir une classe qui dispose de méthodes permettant de récupérer la valeur d'un attribut de l'objet ou d'afficher un HTML "sécurisé" ...

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                                      Anonyme
                                        20 septembre 2019 à 11:55:00

                                        Sauf que escape_to_html n'indique même pas qu'elle va afficher quelque chose. Ni même the_content mais bon Wordpress quoi voilà.

                                        De toute façon les short tags sont encore plus courts, et généralement le premier argument de htmlspecialchars suffit. Du coup ta fonction s'inline <?= htmlspecialchars($dirty) ?>

                                        Pas de quoi créer un wrapper IMHO.

                                        -
                                        Edité par Anonyme 20 septembre 2019 à 11:56:31

                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        faille xss htmlspecialchars

                                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                        • Editeur
                                        • Markdown