Connexion
S'inscrire
Actualités
Quoi de neuf
Activités générales
Auteurs
Forums
Nouveaux messages
Rechercher un forum
Quoi de neuf
Nouveaux messages
Nouveaux messages de profil
Activités générales
Membres
Membres inscrits
Visiteurs actuels
Nouveaux messages de profil
Rechercher dans les messages des profils
Teams
Créé ton équipe
Quoi de neuf ?
Nouveaux messages
Rechercher un forum
Menu
Connexion
S'inscrire
Install the app
Install
Forums
Forums généraux
Informatique
Comment combler les failles de sécurité web les plus courantes ?
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
Vous utilisez un navigateur non à jour ou ancien. Il ne peut pas afficher ce site ou d'autres sites correctement.
Vous devez le mettre à jour ou utiliser un
navigateur alternatif
.
Répondre à la discussion
Message
<blockquote data-quote="Rivals" data-source="post: 6755782" data-attributes="member: 694298"><p style="text-align: center">[ATTACH=full]95911[/ATTACH]</p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"><span style="font-size: 15px">Salut à tous <span style="color: #e25a00">[FA]fa-smile-o[/FA]</span>, vous avez peut-être entendu parler de failles barbares telles que <strong><span style="color: #e25a00">CSRF</span></strong>, <strong><span style="color: #e25a00">XSS</span></strong>, d'<strong><span style="color: #e25a00">injections SQL </span></strong>mais vous aimeriez en apprendre plus sur ces failles mais surtout <span style="color: #e25a00"><strong>comment les combler [FA]fa-magic[/FA]</strong></span>, et bien sachez que vous êtes sur le bon chemin. [FA]fa-map-signs[/FA]</span></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"><span style="font-size: 15px"></span></span></p> <p style="text-align: center">[ATTACH=full]95912[/ATTACH]</p> <p style="text-align: center"></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"><span style="font-size: 15px">Commençons si vous le voulez bien, une faille que je qualifierai de <span style="color: #e25a00"><strong><u>classique</u></strong></span> mais trop répandue malheureusement : <span style="color: rgb(226, 90, 0)"><strong>la faille XSS</strong></span><strong><span style="color: #000000"> (</span></strong><span style="color: rgb(226, 90, 0)"><strong>C</strong></span><span style="color: #000000">ross-</span><span style="color: rgb(226, 90, 0)"><strong>S</strong></span><span style="color: #000000">ite </span><span style="color: rgb(226, 90, 0)"><strong>S</strong></span><span style="color: #000000">cripting</span><strong><span style="color: #000000">)</span></strong>. </span></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"><span style="font-size: 15px"></span></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"><span style="font-size: 15px">Le principe de cette faille de sécurité est d'<strong><span style="color: #e25a00">injecter du code</span></strong> comme de l'<span style="color: #e25a00"><strong>HTML [FA]fa-html5[/FA]</strong></span> ou du <strong><span style="color: #e25a00">JavaScript</span></strong> <strong><span style="color: #e25a00">[FA]fa-code[/FA]</span></strong> sur une page par le biais de champs comme des barres de recherche, un nom d'utilisateur, vraiment n'importe quoi tant que <span style="color: #e25a00"><strong>le champs ou le paramètre par lequel la faille est exploitée, affiche [FA]fa-eye[/FA] la valeur</strong></span> qu'on essaye de modifier pour afficher ce fameux code, prenons un exemple pour que vous compreniez mieux. </span></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"></span></p><p><span style="color: #e25a00"><span style="font-family: 'MyriadPro'">[FA]fa-border fa-gg[/FA] Le code PHP & HTML</span></span></p><p><span style="font-family: 'MyriadPro'">[PHP]<!DOCTYPE html></span></p><p><span style="font-family: 'MyriadPro'"><html></span></p><p><span style="font-family: 'MyriadPro'"><head></span></p><p><span style="font-family: 'MyriadPro'"> <title>Un magnifique site faillible !</title></span></p><p><span style="font-family: 'MyriadPro'"></head></span></p><p><span style="font-family: 'MyriadPro'"><body></span></p><p><span style="font-family: 'MyriadPro'"> <h1>Nous aimons la sécurité, soyez en sûr !</h1></span></p><p><span style="font-family: 'MyriadPro'"> <form action method="POST"></span></p><p><span style="font-family: 'MyriadPro'"> <span>Veuillez saisir une recherche:</span></span></p><p><span style="font-family: 'MyriadPro'"> <input style="padding:10px" name="recherche" type="text" placeholder="Entrez votre recherche..."/></span></p><p><span style="font-family: 'MyriadPro'"> </form></span></p><p><span style="font-family: 'MyriadPro'"></span></p><p><span style="font-family: 'MyriadPro'"> <?php</span></p><p><span style="font-family: 'MyriadPro'"> if($_POST)</span></p><p><span style="font-family: 'MyriadPro'"> {</span></p><p><span style="font-family: 'MyriadPro'"> echo $_POST['recherche'];</span></p><p><span style="font-family: 'MyriadPro'"> }</span></p><p><span style="font-family: 'MyriadPro'"> ?></span></p><p><span style="font-family: 'MyriadPro'"></body></span></p><p><span style="font-family: 'MyriadPro'"></html>[/PHP]</span></p><p><span style="font-family: 'MyriadPro'"></span></p><p style="text-align: center"><span style="font-family: 'MyriadPro'">Je vais vous expliquer brièvement ce que ce code permet. <span style="color: #e25a00"><strong>Dans un premier temps</strong></span> il va générer <strong>un formulaire avec un champs</strong> qui permettra à un utilisateur potentiel de <span style="color: #e25a00"><strong>saisir</strong></span> une recherche [FA]fa-search[/FA] (partie HTML <strong>[FA]fa-html5[/FA]</strong>). <span style="color: #e25a00"><strong>Dans un deuxième temps</strong></span> lorsque le formulaire [FA]fa-wpforms[/FA] aura été soumis, <span style="color: #e25a00"><strong>il va afficher</strong></span> ce qui a été rentré tout simplement et <span style="color: #e25a00"><strong><u>bêtement</u></strong></span> (partie PHP [FA]fa-code[/FA]).</span></p><p></p><p style="text-align: center">[ATTACH=full]95914[/ATTACH]</p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"><span style="font-size: 12px"><em>(nous entrons dans la barre de recherche : "J'entre une recherche tout à fait banale !")</em></span></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"></span></p> <p style="text-align: center">[ATTACH=full]95915[/ATTACH]</p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"><span style="font-size: 12px"><em>(après soumission du formulaire, le texte apparaît bel et bien)</em></span></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"><span style="font-size: 12px"></span></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"><span style="font-size: 15px">Jusqu'ici tout va pour le mieux, <u>l'utilisateur est un simple internaute</u>. Maintenant, passons du côté obscur de la force [FA]fa-user-secret[/FA] et essayons de modifier la page en y <span style="color: #e25a00"><strong>insérant du code HTML [FA]fa-html5[/FA]</strong></span> (avec du CSS [FA]fa-css3[/FA]) via le champs de recherche et voyons ce qu'il se passe.</span></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"><span style="font-size: 15px"></span></span></p> <p style="text-align: center">[ATTACH=full]95916[/ATTACH]</p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"><span style="font-size: 12px"><em>(nous entrons dans la barre de recherche du code qui permettrait de modifier la couleur de la page, du body en rouge)</em></span></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"><span style="font-size: 12px"></span></span></p> <p style="text-align: center">[ATTACH=full]95917[/ATTACH]</p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"><span style="font-size: 15px">Comme vous pouvez le constater <span style="color: #e25a00"><strong>le code s'est exécuté</strong></span>, notre page est devenue <strong><span style="color: #ff0000">rouge</span></strong> et <u>ce n'est pas un comportement que l'on souhaiterait</u>. Sachez qu'il est possible d'insérer du <strong>JavaScript</strong> et donc de <span style="color: #ff0000"><strong>voler des cookies</strong></span> très facilement, imaginez qu'un internaute malicieux vole les cookies d'un administrateur, se serait catastrophique [FA]fa-bomb[/FA]. </span></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"><span style="font-size: 15px"></span></span></p><p><span style="font-family: 'MyriadPro'"><span style="font-size: 15px"><span style="color: #ff0000"><strong>[FA]fa-border fa-warning[/FA] Il existe plusieurs types de failles XSS que je ne présenterai pas car je ne trouve pas cela particulièrement utile, le but est de corriger ce type de failles. </strong></span></span></span></p><p style="text-align: center"></p> <p style="text-align: center">[ATTACH=full]95918[/ATTACH]</p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"><span style="font-size: 15px"></span></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"><span style="font-size: 15px">Comme vous pouvez le voir c'est <span style="color: #00b359"><strong>une faille dangereuse </strong>[FA]fa-bomb[/FA]</span> et pourtant elle est très présente sur beaucoup de sites. Cette faille n'est dangereuse que si l'élément ayant l'injection, c'est à dire dans notre cas le champs de recherche <strong><span style="color: #00b359">affiche la valeur qui est saisie par l'utilisateur</span></strong> il faudrait donc trouver <strong><span style="color: #00b359">un moyen d'afficher cette valeur en toute sécurité</span></strong>, je vous laisse chercher ! </span></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"><span style="font-size: 15px"></span></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"><span style="font-size: 15px">Non, je suis gentil et je vais vous mâcher le travail <span style="color: #00b359">i<strong>l existe une fonction PHP</strong></span> (comme l'affichage est exécutée par du PHP) appelée<span style="color: #00b359"> <strong>htmlspecialchars</strong></span> qui comme l'indique <a href="https://secure.php.net/manual/fr/index.php" target="_blank">la documentation de PHP,</a> que je vous indique à <strong><span style="color: #00b359">consulter régulièrement</span></strong> si vous recherchez une fonction spécifique , convertir les caractères spéciaux (<strong><span style="color: #00b359">&</span></strong>, <strong><span style="color: #00b359">"</span></strong>,<span style="color: #00b359"> <strong>'</strong></span><strong>,</strong> <strong><span style="color: #00b359"><</span></strong>, <strong><span style="color: #00b359">></span></strong>) en entités HTML [FA]fa-html5[/FA] (leur équivalent : <strong><span style="color: #00b359">&amp</span></strong>, <strong><span style="color: #00b359">&quot</span></strong>, <em><strong><span style="color: #00b359">&#039</span></strong>, </em></span></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"><em> <strong><span style="color: #00b359">&lt</span></strong>, <em><strong><span style="color: #00b359">&gt</span></strong></em></em>), ainsi <u>l'injection ne sera plus exécutée</u> par la page, essayons ! </span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"></span></p><p></p><p style="text-align: left"><span style="color: #e25a00"><span style="color: #00b359"><span style="font-family: 'MyriadPro'">[FA]fa-border fa-gg[/FA] La version sécurisée </span></span></span></p><p><span style="font-family: 'MyriadPro'">[PHP]<!DOCTYPE html></span></p><p><span style="font-family: 'MyriadPro'"><html></span></p><p><span style="font-family: 'MyriadPro'"><head></span></p><p><span style="font-family: 'MyriadPro'"> <title>Un magnifique site faillible !</title></span></p><p><span style="font-family: 'MyriadPro'"></head></span></p><p><span style="font-family: 'MyriadPro'"><body></span></p><p><span style="font-family: 'MyriadPro'"> <h1>Nous aimons la sécurité, soyez en sûr !</h1></span></p><p><span style="font-family: 'MyriadPro'"> <form action method="POST"></span></p><p><span style="font-family: 'MyriadPro'"> <span>Veuillez saisir une recherche:</span></span></p><p><span style="font-family: 'MyriadPro'"> <input style="padding:10px" name="recherche" type="text" placeholder="Entrez votre recherche..."/></span></p><p><span style="font-family: 'MyriadPro'"> </form></span></p><p><span style="font-family: 'MyriadPro'"></span></p><p><span style="font-family: 'MyriadPro'"> <?php</span></p><p><span style="font-family: 'MyriadPro'"> if($_POST)</span></p><p><span style="font-family: 'MyriadPro'"> {</span></p><p><span style="font-family: 'MyriadPro'"> echo htmlspecialchars($_POST['recherche']);</span></p><p><span style="font-family: 'MyriadPro'"> }</span></p><p><span style="font-family: 'MyriadPro'"> ?></span></p><p><span style="font-family: 'MyriadPro'"></body></span></p><p><span style="font-family: 'MyriadPro'"></html>[/PHP]</span></p><p style="text-align: center">[ATTACH=full]95920[/ATTACH]</p> <p style="text-align: center"></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"><span style="font-size: 15px"><span style="color: #000000">La faille a été corrigée</span> <span style="color: rgb(0, 179, 89)">[FA]fa-check-circle[/FA]</span><span style="color: #000000">, dorénavant la page est affichée avec les entités HTML [FA]fa-html5[/FA]. </span></span></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"></span></p><p><span style="font-family: 'MyriadPro'"><span style="font-size: 15px"><span style="color: #0059b3">[FA]fa-border fa-link[/FA]</span> <a href="http://php.net/manual/fr/function.htmlspecialchars.php" target="_blank">http://php.net/manual/fr/function.htmlspecialchars.php</a></span></span></p><p style="text-align: center"></p> <p style="text-align: center">[ATTACH=full]95922[/ATTACH]</p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'">Nous avons vu la faille <strong>XSS</strong>, passons à <span style="color: #e25a00"><strong>la faille</strong> <strong>SQL [FA]fa-database[/FA]</strong></span> qui d'autant plus dangereuse que la précédente. Cette faille a pour but d'<strong><span style="color: #e25a00">outrepasser</span> </strong>(le plus souvent) <span style="color: #e25a00"><strong>des espaces de connexion [FA]fa-sign-in[/FA]</strong></span> avec diverses techniques variées comme <span style="color: #e25a00"><strong>la manipulation des requêtes SQL directement avec des valeurs saisies [FA]fa-keyboard-o[/FA] comme un identifiant et un mot de passe</strong></span> (<a href="https://fr.wikipedia.org/wiki/Injection_SQL" target="_blank">rendez-vous sur Wikipédia si vous voulez avoir des exemples détaillés</a>). Ces failles sont possibles car les valeurs sont <span style="color: #e25a00"><strong>directement injectées [FA]fa-eyedropper[/FA]</strong></span> dans la requête SQL, vous pouvez en voir un exemple ci-dessous.</span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"></span></p><p><span style="color: #000000"><span style="font-family: 'MyriadPro'">[FA]fa-border fa-gg[/FA] Une requête MySQL</span></span></p><p><span style="font-family: 'MyriadPro'">[CODE]SELECT * FROM xf_users WHERE username = $_POST['username'] AND password = $_POST['password'];[/CODE]</span></p><p style="text-align: center"></p> <p style="text-align: center">[ATTACH=full]95921[/ATTACH]</p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'">Pour <strong><span style="color: #00b359">combler [FA]fa-check-circle-o[/FA] cette faille</span></strong> problématique est tout aussi dangereuse que la XSS. Nous avons vu précédemment que<strong><span style="color: #00b359"> le problème était dû aux variables implantées directement dans la requête [FA]fa-exchange[/FA]</span></strong>, pour combler ce problème il est recommandé (car il y a d'autres solutions) d'utiliser des requêtes préparées. Ces requêtes permettent de traiter les paramètres d'une différente façon, en effet la requête va être "<em>stockée en mémoire</em>" afin d'être re-utilisée à chaque fois que vous l'utiliserez avec différents paramètres ainsi <strong><span style="color: #00b359">vous gagnez en performance</span></strong> et<strong><span style="color: #00b359"> vous comblez une faille de sécurité</span></strong> MySQL.</span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"></span></p><p><span style="color: #00b359"><span style="font-family: 'MyriadPro'">[FA]fa-border fa-gg[/FA] Une requête préparée MySQL</span></span></p><p><span style="font-family: 'MyriadPro'">[PHP]<?php</span></p><p><span style="font-family: 'MyriadPro'"></span></p><p><span style="font-family: 'MyriadPro'">$bdd = new PDO('mysql:host=127.0.0.1;dbname=', 'user', 'mdp');</span></p><p><span style="font-family: 'MyriadPro'"></span></p><p><span style="font-family: 'MyriadPro'">$request = $bdd->prepare('SELECT *</span></p><p><span style="font-family: 'MyriadPro'"> FROM xf_users</span></p><p><span style="font-family: 'MyriadPro'"> WHERE username = ? AND password = ?');</span></p><p><span style="font-family: 'MyriadPro'">$request->execute(array($_POST['username'], $_POST['password']));</span></p><p><span style="font-family: 'MyriadPro'">$users = $request->fetchAll();[/PHP]</span></p><p><span style="font-family: 'MyriadPro'"></span></p><p style="text-align: center"></p> <p style="text-align: center">[ATTACH=full]95923[/ATTACH]</p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'">Nous terminerons ce tutoriel par la faille <strong><span style="color: #e25a00">CSRF</span></strong> (<span style="color: #e25a00">C</span>ross-<span style="color: #e25a00">S</span>ite <span style="color: #e25a00">R</span>equest<strong><span style="color: #e25a00"> F</span></strong>orgery) qui a pour principe de <strong><span style="color: #e25a00">faire exécuter à une personne [FA]fa-user[/FA] ayant des droits de modération, d'administration une requête qu'il n'a jamais voulu envoyer</span></strong>. Prenons un exemple, imaginons que je sois un internaute du côté obscur de la force et que <strong><span style="color: #e25a00">je veuille bannir [FA]fa-gavel[/FA] un membre de la shoutbox de RealityGaming</span></strong>. </span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'">Pourquoi la shoutbox me direz-vous ? Car j'ai eu accès à cet addOn grâce à internet, j'ai analysé le code et je sais qu'il y a une faille au niveau de la fonctionnalité. Cette faille est due au<span style="color: #e25a00"><strong> manque de vérification [FA]fa-eye-slash[/FA] de la méthode HTTP</strong></span> demandée, en effet le bannissement s'effectue <u><strong><span style="color: #e25a00">via la méthode POST</span></strong></u> puisque l'on passe par un formulaire qui utilise cette méthode. Dans le code source j'ai vu que <strong><u><span style="color: #e25a00">toutes les méthodes étaient acceptées [FA]fa-check-square-o[/FA]</span></u></strong>, et <u>le plus simple</u> pour faire exécuter une action à un utilisateur sans qu'il le sache est <strong><span style="color: #e25a00">la méthode GET</span></strong> puisqu'elle se transmet facilement par le biais d'un lien [FA]fa-link[/FA] (<em>camouflé par un raccourcir d'URL ou autre</em>), ainsi il suffit de <strong><span style="color: #e25a00">passer en URL les paramètres [FA]fa-sliders[/FA] requis</span></strong> dans mon cas ça va être un identifiant de message récupérable via inspecter élément que <strong><span style="color: #e25a00">je vais ajouter à la requête</span></strong> qui permet le bannissement dans mon cas je n'aurai qu'à transmettre cette URL : <em><a href="https://reality-gaming.fr/taigachat/10489955/ban" target="_blank">https://reality-gaming.fr/taigachat/10489955/ban</a></em>.</span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'">Dans le un cas différent, même si l'utilisateur ne connaît pas le code source de mon site <u><strong><span style="color: #e25a00">il va tout de même chercher à remettre la sécurité [FA]fa-user-secret[/FA] en jeu</span></strong></u>.</span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"></span></p><p><span style="font-family: 'MyriadPro'"><span style="color: #ff0000"><strong>[FA]fa-border fa-warning[/FA] Cette faille est naturellement corrigée sur le forum.</strong></span></span></p><p style="text-align: center"></p> <p style="text-align: center">[ATTACH=full]95924[/ATTACH]</p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'">Nous avons vu il y a quelques instants que la faille était notamment due à <strong><span style="color: #00b359">un manque de vérification du côté serveur [FA]fa-server[/FA]</span></strong> (<em>backend), </em> il faut donc que nous optons pour des vérifications accrues afin de garantir que<span style="color: #00b359"> <strong>la requête effectuée par l'utilisateur est bien voulue par celui-ci</strong></span>. Pour se faire je vous recommande d'utiliser <strong><span style="color: #00b359">des jetons [FA]fa-ticket[/FA] de sécurité</span></strong> et de vérifier la méthode utilisée lorsqu'il s'agit de soumettre, supprimer, modifier des informations [FA]fa-infos-circle[/FA]. </span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"><u>Chaque utilisateur possèdera un jeton de sécurité stocké en base de données [FA]fa-database[/FA]</u> que vous pouvez inclure dans votre formulaire avec un champs caché qui possèdera une propriété "hidden" ce qui le rendra invisible aux yeux de notre utilisateur , ainsi <strong><span style="color: #00b359">il possèdera en valeur notre jeton</span></strong> et lorsque l'utilisateur soumettra un formulaire [FA]fa-wpforms[/FA] <strong><span style="color: #00b359">nous devrons vérifier si le token de sécurité et bien existant et si il est propre à l'utilisateur</span> </strong> courant, de plus nous vérifierons si la méthode utilisée <u>est bien POST</u>. </span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'">Pour générer un token de sécurité, <u>libre à vous d'utiliser la méthode que vous souhaitez</u> par exemple XenForo utilise la méthode suivante pour générer un token.</span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"></span></p><p><span style="font-family: 'MyriadPro'">[CODE]$userId . ',' . XenForo_Application::$time. ',' . sha1(XenForo_Application::$time . $csrfToken);</span></p><p><span style="font-family: 'MyriadPro'"></span></p><p><span style="font-family: 'MyriadPro'">// $userId = l'identifiant du membre</span></p><p><span style="font-family: 'MyriadPro'">// XenForo_Application::$time = le temps actuel en timestamp</span></p><p><span style="font-family: 'MyriadPro'">// sha1(XenForo_Application::$time = il crypte ce temps en sha1</span></p><p><span style="font-family: 'MyriadPro'">// $csrfToken = un token plus faible [/CODE]</span></p><p><span style="font-family: 'MyriadPro'"></span></p><p><span style="font-family: 'MyriadPro'"><span style="color: #00b359">[FA]fa-border fa-gg[/FA] Un formulaire sous le CMS XenForo</span></span></p><p></p><p style="text-align: center">[ATTACH=full]95927[/ATTACH]</p> <p style="text-align: center"></p> <p style="text-align: center">[ATTACH=full]95929[/ATTACH]</p> <p style="text-align: center"></p><p><span style="font-family: 'MyriadPro'"><span style="color: #5900b3">[FA]fa-border fa-exclamation-circle[/FA]</span><span style="color: #000000"> <strong><u>Cacher la hiérarchie de vos fichiers</u></strong></span></span></p><p><span style="font-family: 'MyriadPro'"><span style="color: #000000"></span></span></p><p style="margin-left: 20px"><span style="font-family: 'MyriadPro'"><span style="color: #ff0000"><strong>[FA]fa-ban[/FA]</strong></span> C'est quelque chose que je vois très fréquemment, <strong><span style="color: #ff0000">un utilisateur peut se rendre dans vos dossiers</span></strong> (<em>assets, style, img etc.</em>) et voir la liste de vos fichiers et ce n'est pas un comportement que l'on souhaite.</span></p> <p style="margin-left: 20px"><span style="font-family: 'MyriadPro'"></span></p> <p style="margin-left: 20px"><span style="font-family: 'MyriadPro'"><strong><span style="color: #00b359">[FA]fa-check-circle-o[/FA]</span></strong> Pour combler ce comportement, vous pouvez ajouter <strong><span style="color: #00b359">un fichier index</span></strong> (HTML ou PHP) dans vos dossiers.</span></p> <p style="margin-left: 20px"><span style="font-family: 'MyriadPro'">Vous pouvez également ajouter <strong><span style="color: #00b359">un fichier .htaccess</span></strong> avec la ligne suivante : <em>Options -Indexes</em></span></p><p><span style="font-family: 'MyriadPro'"></span></p><p><span style="font-family: 'MyriadPro'"><span style="color: #5900b3">[FA]fa-border fa-exclamation-circle[/FA]</span> <strong><span style="color: #000000"><u>Ne jamais faire confiance aux données qui vous sont transmises</u></span></strong></span></p><p><span style="font-family: 'MyriadPro'"></span></p><p style="margin-left: 20px"><strong><span style="font-family: 'MyriadPro'"><span style="color: #ff0000">[FA]fa-ban[/FA]</span> </span></strong><span style="font-family: 'MyriadPro'">En effet, vous auriez peut-être l'envie par exemple de vérifier si l'utilisateur provient d'un site particulier avec le </span><em><span style="font-family: 'MyriadPro'">header</span></em><span style="font-family: 'MyriadPro'"> HTTP : </span><em><span style="font-family: 'MyriadPro Light'"><span style="color: #ff0000">HTTP_REFERER</span></span></em><span style="font-family: 'MyriadPro'">. Mais sachez que <strong><span style="color: #ff0000">tous les headers sont modifiables</span></strong> via des extensions notamment. </span></p> <p style="margin-left: 20px"><span style="font-family: 'MyriadPro'"></span></p> <p style="margin-left: 20px"><span style="font-family: 'MyriadPro'"><strong><span style="color: #00b359">[FA]fa-check-circle-o[/FA]</span> </strong><u>Il n'y a aucune solution à cela</u>, dites vous que chaque information transmise par le navigateur de l'utilisateur est théoriquement modifiable, vous ne pouvez pas lui faire confiance.</span></p> <p style="margin-left: 20px"><span style="font-family: 'MyriadPro'"></span></p><p><span style="font-family: 'MyriadPro'"><span style="color: #5900b3">[FA]fa-border fa-exclamation-circle[/FA]</span><strong><span style="color: rgb(0, 0, 0)"> <u>Toujours vérifier les méthodes utilisées </u></span></strong></span></p><p><span style="font-family: 'MyriadPro'"></span></p><p style="margin-left: 20px"><span style="font-family: 'MyriadPro'"><strong><span style="color: #ff0000">[FA]fa-ban[/FA]</span> </strong>Dans ce tutoriel, je n'ai pas présenté toutes les failles connues car ça reviendrait à écrire un livre. Par exemple il existe une faille permettant d'outrepasser une demande d'authentification par .htaccess si celui-ci <strong><span style="color: #ff0000">accepte toutes les requêtes possibles</span></strong>.</span></p> <p style="margin-left: 20px"><span style="font-family: 'MyriadPro'"></span></p> <p style="margin-left: 20px"><span style="font-family: 'MyriadPro'"><strong><span style="color: #00b359">[FA]fa-check-circle-o[/FA]</span> </strong>Il faut toujours <strong><span style="color: #00b359">vérifier la méthode</span></strong> de la requête demandée, c'est réellement une règle d'or.</span></p><p><span style="font-family: 'MyriadPro'"></span></p><p><span style="font-family: 'MyriadPro'"><span style="color: #5900b3">[FA]fa-border fa-exclamation-circle[/FA]</span> <strong><span style="color: #000000"><u>Ne jamais se sentir en sécurité</u></span></strong></span></p><p><span style="font-family: 'MyriadPro'"></span></p><p style="margin-left: 20px"><span style="font-family: 'MyriadPro'"><strong><span style="font-family: 'MyriadPro-Regular'"><span style="color: #00b359">[FA]fa-check-circle-o[/FA]</span> </span></strong>Mon dernier conseil est de ne jamais se sentir en sécurité, car en effet cela pourrait-être votre plus grande faille et ce conseil est valable pour tout domaine. </span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'">[teams]43[/teams]</span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"></span></p> <p style="text-align: center"><span style="font-family: 'MyriadPro'"><span style="font-size: 15px"><em>Rivals GTP</em></span></span></p></blockquote><p></p>
[QUOTE="Rivals, post: 6755782, member: 694298"] [CENTER][ATTACH=full]95911[/ATTACH] [FONT=MyriadPro][SIZE=4]Salut à tous [COLOR=#e25a00][FA]fa-smile-o[/FA][/COLOR], vous avez peut-être entendu parler de failles barbares telles que [B][COLOR=#e25a00]CSRF[/COLOR][/B], [B][COLOR=#e25a00]XSS[/COLOR][/B], d'[B][COLOR=#e25a00]injections SQL [/COLOR][/B]mais vous aimeriez en apprendre plus sur ces failles mais surtout [COLOR=#e25a00][B]comment les combler [FA]fa-magic[/FA][/B][/COLOR], et bien sachez que vous êtes sur le bon chemin. [FA]fa-map-signs[/FA] [/SIZE][/FONT] [ATTACH=full]95912[/ATTACH] [FONT=MyriadPro][SIZE=4]Commençons si vous le voulez bien, une faille que je qualifierai de [COLOR=#e25a00][B][U]classique[/U][/B][/COLOR] mais trop répandue malheureusement : [COLOR=rgb(226, 90, 0)][B]la faille XSS[/B][/COLOR][B][COLOR=#000000] ([/COLOR][/B][COLOR=rgb(226, 90, 0)][B]C[/B][/COLOR][COLOR=#000000]ross-[/COLOR][COLOR=rgb(226, 90, 0)][B]S[/B][/COLOR][COLOR=#000000]ite [/COLOR][COLOR=rgb(226, 90, 0)][B]S[/B][/COLOR][COLOR=#000000]cripting[/COLOR][B][COLOR=#000000])[/COLOR][/B]. Le principe de cette faille de sécurité est d'[B][COLOR=#e25a00]injecter du code[/COLOR][/B] comme de l'[COLOR=#e25a00][B]HTML [FA]fa-html5[/FA][/B][/COLOR] ou du [B][COLOR=#e25a00]JavaScript[/COLOR][/B] [B][COLOR=#e25a00][FA]fa-code[/FA][/COLOR][/B] sur une page par le biais de champs comme des barres de recherche, un nom d'utilisateur, vraiment n'importe quoi tant que [COLOR=#e25a00][B]le champs ou le paramètre par lequel la faille est exploitée, affiche [FA]fa-eye[/FA] la valeur[/B][/COLOR] qu'on essaye de modifier pour afficher ce fameux code, prenons un exemple pour que vous compreniez mieux. [/SIZE] [/FONT][/CENTER] [COLOR=#e25a00][FONT=MyriadPro][FA]fa-border fa-gg[/FA] Le code PHP & HTML[/FONT][/COLOR] [FONT=MyriadPro][PHP]<!DOCTYPE html> <html> <head> <title>Un magnifique site faillible !</title> </head> <body> <h1>Nous aimons la sécurité, soyez en sûr !</h1> <form action method="POST"> <span>Veuillez saisir une recherche:</span> <input style="padding:10px" name="recherche" type="text" placeholder="Entrez votre recherche..."/> </form> <?php if($_POST) { echo $_POST['recherche']; } ?> </body> </html>[/PHP] [/FONT] [CENTER][FONT=MyriadPro]Je vais vous expliquer brièvement ce que ce code permet. [COLOR=#e25a00][B]Dans un premier temps[/B][/COLOR] il va générer [B]un formulaire avec un champs[/B] qui permettra à un utilisateur potentiel de [COLOR=#e25a00][B]saisir[/B][/COLOR] une recherche [FA]fa-search[/FA] (partie HTML [B][FA]fa-html5[/FA][/B]). [COLOR=#e25a00][B]Dans un deuxième temps[/B][/COLOR] lorsque le formulaire [FA]fa-wpforms[/FA] aura été soumis, [COLOR=#e25a00][B]il va afficher[/B][/COLOR] ce qui a été rentré tout simplement et [COLOR=#e25a00][B][U]bêtement[/U][/B][/COLOR] (partie PHP [FA]fa-code[/FA]).[/FONT][/CENTER] [CENTER][ATTACH=full]95914[/ATTACH] [FONT=MyriadPro][SIZE=3][I](nous entrons dans la barre de recherche : "J'entre une recherche tout à fait banale !")[/I][/SIZE] [/FONT] [ATTACH=full]95915[/ATTACH] [FONT=MyriadPro][SIZE=3][I](après soumission du formulaire, le texte apparaît bel et bien)[/I] [/SIZE] [SIZE=4]Jusqu'ici tout va pour le mieux, [U]l'utilisateur est un simple internaute[/U]. Maintenant, passons du côté obscur de la force [FA]fa-user-secret[/FA] et essayons de modifier la page en y [COLOR=#e25a00][B]insérant du code HTML [FA]fa-html5[/FA][/B][/COLOR] (avec du CSS [FA]fa-css3[/FA]) via le champs de recherche et voyons ce qu'il se passe. [/SIZE][/FONT] [ATTACH=full]95916[/ATTACH] [FONT=MyriadPro][SIZE=3][I](nous entrons dans la barre de recherche du code qui permettrait de modifier la couleur de la page, du body en rouge)[/I] [/SIZE][/FONT] [ATTACH=full]95917[/ATTACH] [FONT=MyriadPro] [SIZE=4]Comme vous pouvez le constater [COLOR=#e25a00][B]le code s'est exécuté[/B][/COLOR], notre page est devenue [B][COLOR=#ff0000]rouge[/COLOR][/B] et [U]ce n'est pas un comportement que l'on souhaiterait[/U]. Sachez qu'il est possible d'insérer du [B]JavaScript[/B] et donc de [COLOR=#ff0000][B]voler des cookies[/B][/COLOR] très facilement, imaginez qu'un internaute malicieux vole les cookies d'un administrateur, se serait catastrophique [FA]fa-bomb[/FA]. [/SIZE][/FONT][/CENTER] [FONT=MyriadPro][SIZE=4][COLOR=#ff0000][B][FA]fa-border fa-warning[/FA] Il existe plusieurs types de failles XSS que je ne présenterai pas car je ne trouve pas cela particulièrement utile, le but est de corriger ce type de failles. [/B][/COLOR][/SIZE][/FONT] [CENTER] [ATTACH=full]95918[/ATTACH] [FONT=MyriadPro][SIZE=4] Comme vous pouvez le voir c'est [COLOR=#00b359][B]une faille dangereuse [/B][FA]fa-bomb[/FA][/COLOR] et pourtant elle est très présente sur beaucoup de sites. Cette faille n'est dangereuse que si l'élément ayant l'injection, c'est à dire dans notre cas le champs de recherche [B][COLOR=#00b359]affiche la valeur qui est saisie par l'utilisateur[/COLOR][/B] il faudrait donc trouver [B][COLOR=#00b359]un moyen d'afficher cette valeur en toute sécurité[/COLOR][/B], je vous laisse chercher ! Non, je suis gentil et je vais vous mâcher le travail [COLOR=#00b359]i[B]l existe une fonction PHP[/B][/COLOR] (comme l'affichage est exécutée par du PHP) appelée[COLOR=#00b359] [B]htmlspecialchars[/B][/COLOR] qui comme l'indique [URL='https://secure.php.net/manual/fr/index.php']la documentation de PHP,[/URL] que je vous indique à [B][COLOR=#00b359]consulter régulièrement[/COLOR][/B] si vous recherchez une fonction spécifique , convertir les caractères spéciaux ([B][COLOR=#00b359]&[/COLOR][/B], [B][COLOR=#00b359]"[/COLOR][/B],[COLOR=#00b359] [B]'[/B][/COLOR][B],[/B] [B][COLOR=#00b359]<[/COLOR][/B], [B][COLOR=#00b359]>[/COLOR][/B]) en entités HTML [FA]fa-html5[/FA] (leur équivalent : [B][COLOR=#00b359]&[/COLOR][/B], [B][COLOR=#00b359]"[/COLOR][/B], [I][B][COLOR=#00b359]'[/COLOR][/B], [/I][/SIZE] [I] [B][COLOR=#00b359]<[/COLOR][/B], [I][B][COLOR=#00b359]>[/COLOR][/B][/I][/I]), ainsi [U]l'injection ne sera plus exécutée[/U] par la page, essayons ! [/FONT][/CENTER] [LEFT][COLOR=#e25a00][COLOR=#00b359][FONT=MyriadPro][FA]fa-border fa-gg[/FA] La version sécurisée [/FONT][/COLOR][/COLOR][/LEFT] [FONT=MyriadPro][PHP]<!DOCTYPE html> <html> <head> <title>Un magnifique site faillible !</title> </head> <body> <h1>Nous aimons la sécurité, soyez en sûr !</h1> <form action method="POST"> <span>Veuillez saisir une recherche:</span> <input style="padding:10px" name="recherche" type="text" placeholder="Entrez votre recherche..."/> </form> <?php if($_POST) { echo htmlspecialchars($_POST['recherche']); } ?> </body> </html>[/PHP][/FONT] [CENTER][ATTACH=full]95920[/ATTACH] [FONT=MyriadPro][SIZE=4][COLOR=#000000]La faille a été corrigée[/COLOR] [COLOR=rgb(0, 179, 89)][FA]fa-check-circle[/FA][/COLOR][COLOR=#000000], dorénavant la page est affichée avec les entités HTML [FA]fa-html5[/FA]. [/COLOR][/SIZE] [/FONT][/CENTER] [FONT=MyriadPro][SIZE=4][COLOR=#0059b3][FA]fa-border fa-link[/FA][/COLOR] [URL]http://php.net/manual/fr/function.htmlspecialchars.php[/URL][/SIZE][/FONT] [CENTER] [ATTACH=full]95922[/ATTACH] [FONT=MyriadPro] Nous avons vu la faille [B]XSS[/B], passons à [COLOR=#e25a00][B]la faille[/B] [B]SQL [FA]fa-database[/FA][/B][/COLOR] qui d'autant plus dangereuse que la précédente. Cette faille a pour but d'[B][COLOR=#e25a00]outrepasser[/COLOR] [/B](le plus souvent) [COLOR=#e25a00][B]des espaces de connexion [FA]fa-sign-in[/FA][/B][/COLOR] avec diverses techniques variées comme [COLOR=#e25a00][B]la manipulation des requêtes SQL directement avec des valeurs saisies [FA]fa-keyboard-o[/FA] comme un identifiant et un mot de passe[/B][/COLOR] ([URL='https://fr.wikipedia.org/wiki/Injection_SQL']rendez-vous sur Wikipédia si vous voulez avoir des exemples détaillés[/URL]). Ces failles sont possibles car les valeurs sont [COLOR=#e25a00][B]directement injectées [FA]fa-eyedropper[/FA][/B][/COLOR] dans la requête SQL, vous pouvez en voir un exemple ci-dessous. [/FONT][/CENTER] [COLOR=#000000][FONT=MyriadPro][FA]fa-border fa-gg[/FA] Une requête MySQL[/FONT][/COLOR] [FONT=MyriadPro][CODE]SELECT * FROM xf_users WHERE username = $_POST['username'] AND password = $_POST['password'];[/CODE][/FONT] [CENTER] [ATTACH=full]95921[/ATTACH] [FONT=MyriadPro] Pour [B][COLOR=#00b359]combler [FA]fa-check-circle-o[/FA] cette faille[/COLOR][/B] problématique est tout aussi dangereuse que la XSS. Nous avons vu précédemment que[B][COLOR=#00b359] le problème était dû aux variables implantées directement dans la requête [FA]fa-exchange[/FA][/COLOR][/B], pour combler ce problème il est recommandé (car il y a d'autres solutions) d'utiliser des requêtes préparées. Ces requêtes permettent de traiter les paramètres d'une différente façon, en effet la requête va être "[I]stockée en mémoire[/I]" afin d'être re-utilisée à chaque fois que vous l'utiliserez avec différents paramètres ainsi [B][COLOR=#00b359]vous gagnez en performance[/COLOR][/B] et[B][COLOR=#00b359] vous comblez une faille de sécurité[/COLOR][/B] MySQL. [/FONT][/CENTER] [COLOR=#00b359][FONT=MyriadPro][FA]fa-border fa-gg[/FA] Une requête préparée MySQL[/FONT][/COLOR] [FONT=MyriadPro][PHP]<?php $bdd = new PDO('mysql:host=127.0.0.1;dbname=', 'user', 'mdp'); $request = $bdd->prepare('SELECT * FROM xf_users WHERE username = ? AND password = ?'); $request->execute(array($_POST['username'], $_POST['password'])); $users = $request->fetchAll();[/PHP] [/FONT] [CENTER] [ATTACH=full]95923[/ATTACH] [FONT=MyriadPro] Nous terminerons ce tutoriel par la faille [B][COLOR=#e25a00]CSRF[/COLOR][/B] ([COLOR=#e25a00]C[/COLOR]ross-[COLOR=#e25a00]S[/COLOR]ite [COLOR=#e25a00]R[/COLOR]equest[B][COLOR=#e25a00] F[/COLOR][/B]orgery) qui a pour principe de [B][COLOR=#e25a00]faire exécuter à une personne [FA]fa-user[/FA] ayant des droits de modération, d'administration une requête qu'il n'a jamais voulu envoyer[/COLOR][/B]. Prenons un exemple, imaginons que je sois un internaute du côté obscur de la force et que [B][COLOR=#e25a00]je veuille bannir [FA]fa-gavel[/FA] un membre de la shoutbox de RealityGaming[/COLOR][/B]. Pourquoi la shoutbox me direz-vous ? Car j'ai eu accès à cet addOn grâce à internet, j'ai analysé le code et je sais qu'il y a une faille au niveau de la fonctionnalité. Cette faille est due au[COLOR=#e25a00][B] manque de vérification [FA]fa-eye-slash[/FA] de la méthode HTTP[/B][/COLOR] demandée, en effet le bannissement s'effectue [U][B][COLOR=#e25a00]via la méthode POST[/COLOR][/B][/U] puisque l'on passe par un formulaire qui utilise cette méthode. Dans le code source j'ai vu que [B][U][COLOR=#e25a00]toutes les méthodes étaient acceptées [FA]fa-check-square-o[/FA][/COLOR][/U][/B], et [U]le plus simple[/U] pour faire exécuter une action à un utilisateur sans qu'il le sache est [B][COLOR=#e25a00]la méthode GET[/COLOR][/B] puisqu'elle se transmet facilement par le biais d'un lien [FA]fa-link[/FA] ([I]camouflé par un raccourcir d'URL ou autre[/I]), ainsi il suffit de [B][COLOR=#e25a00]passer en URL les paramètres [FA]fa-sliders[/FA] requis[/COLOR][/B] dans mon cas ça va être un identifiant de message récupérable via inspecter élément que [B][COLOR=#e25a00]je vais ajouter à la requête[/COLOR][/B] qui permet le bannissement dans mon cas je n'aurai qu'à transmettre cette URL : [I][URL]https://reality-gaming.fr/taigachat/10489955/ban[/URL][/I]. Dans le un cas différent, même si l'utilisateur ne connaît pas le code source de mon site [U][B][COLOR=#e25a00]il va tout de même chercher à remettre la sécurité [FA]fa-user-secret[/FA] en jeu[/COLOR][/B][/U]. [/FONT][/CENTER] [FONT=MyriadPro][COLOR=#ff0000][B][FA]fa-border fa-warning[/FA] Cette faille est naturellement corrigée sur le forum.[/B][/COLOR][/FONT] [CENTER] [ATTACH=full]95924[/ATTACH] [FONT=MyriadPro] Nous avons vu il y a quelques instants que la faille était notamment due à [B][COLOR=#00b359]un manque de vérification du côté serveur [FA]fa-server[/FA][/COLOR][/B] ([I]backend), [/I] il faut donc que nous optons pour des vérifications accrues afin de garantir que[COLOR=#00b359] [B]la requête effectuée par l'utilisateur est bien voulue par celui-ci[/B][/COLOR]. Pour se faire je vous recommande d'utiliser [B][COLOR=#00b359]des jetons [FA]fa-ticket[/FA] de sécurité[/COLOR][/B] et de vérifier la méthode utilisée lorsqu'il s'agit de soumettre, supprimer, modifier des informations [FA]fa-infos-circle[/FA]. [U]Chaque utilisateur possèdera un jeton de sécurité stocké en base de données [FA]fa-database[/FA][/U] que vous pouvez inclure dans votre formulaire avec un champs caché qui possèdera une propriété "hidden" ce qui le rendra invisible aux yeux de notre utilisateur , ainsi [B][COLOR=#00b359]il possèdera en valeur notre jeton[/COLOR][/B] et lorsque l'utilisateur soumettra un formulaire [FA]fa-wpforms[/FA] [B][COLOR=#00b359]nous devrons vérifier si le token de sécurité et bien existant et si il est propre à l'utilisateur[/COLOR] [/B] courant, de plus nous vérifierons si la méthode utilisée [U]est bien POST[/U]. Pour générer un token de sécurité, [U]libre à vous d'utiliser la méthode que vous souhaitez[/U] par exemple XenForo utilise la méthode suivante pour générer un token. [/FONT][/CENTER] [FONT=MyriadPro][CODE]$userId . ',' . XenForo_Application::$time. ',' . sha1(XenForo_Application::$time . $csrfToken); // $userId = l'identifiant du membre // XenForo_Application::$time = le temps actuel en timestamp // sha1(XenForo_Application::$time = il crypte ce temps en sha1 // $csrfToken = un token plus faible [/CODE] [COLOR=#00b359][FA]fa-border fa-gg[/FA] Un formulaire sous le CMS XenForo[/COLOR][/FONT] [CENTER][ATTACH=full]95927[/ATTACH] [ATTACH=full]95929[/ATTACH] [/CENTER] [FONT=MyriadPro][COLOR=#5900b3][FA]fa-border fa-exclamation-circle[/FA][/COLOR][COLOR=#000000] [B][U]Cacher la hiérarchie de vos fichiers[/U][/B] [/COLOR][/FONT] [INDENT][FONT=MyriadPro][COLOR=#ff0000][B][FA]fa-ban[/FA][/B][/COLOR] C'est quelque chose que je vois très fréquemment, [B][COLOR=#ff0000]un utilisateur peut se rendre dans vos dossiers[/COLOR][/B] ([I]assets, style, img etc.[/I]) et voir la liste de vos fichiers et ce n'est pas un comportement que l'on souhaite. [B][COLOR=#00b359][FA]fa-check-circle-o[/FA][/COLOR][/B] Pour combler ce comportement, vous pouvez ajouter [B][COLOR=#00b359]un fichier index[/COLOR][/B] (HTML ou PHP) dans vos dossiers. Vous pouvez également ajouter [B][COLOR=#00b359]un fichier .htaccess[/COLOR][/B] avec la ligne suivante : [I]Options -Indexes[/I][/FONT][/INDENT] [FONT=MyriadPro] [COLOR=#5900b3][FA]fa-border fa-exclamation-circle[/FA][/COLOR] [B][COLOR=#000000][U]Ne jamais faire confiance aux données qui vous sont transmises[/U][/COLOR][/B] [/FONT] [INDENT][B][FONT=MyriadPro][COLOR=#ff0000][FA]fa-ban[/FA][/COLOR] [/FONT][/B][FONT=MyriadPro]En effet, vous auriez peut-être l'envie par exemple de vérifier si l'utilisateur provient d'un site particulier avec le [/FONT][I][FONT=MyriadPro]header[/FONT][/I][FONT=MyriadPro] HTTP : [/FONT][I][FONT=MyriadPro Light][COLOR=#ff0000]HTTP_REFERER[/COLOR][/FONT][/I][FONT=MyriadPro]. Mais sachez que [B][COLOR=#ff0000]tous les headers sont modifiables[/COLOR][/B] via des extensions notamment. [B][COLOR=#00b359][FA]fa-check-circle-o[/FA][/COLOR] [/B][U]Il n'y a aucune solution à cela[/U], dites vous que chaque information transmise par le navigateur de l'utilisateur est théoriquement modifiable, vous ne pouvez pas lui faire confiance. [/FONT][/INDENT] [FONT=MyriadPro][COLOR=#5900b3][FA]fa-border fa-exclamation-circle[/FA][/COLOR][B][COLOR=rgb(0, 0, 0)] [U]Toujours vérifier les méthodes utilisées [/U][/COLOR][/B] [/FONT] [INDENT][FONT=MyriadPro][B][COLOR=#ff0000][FA]fa-ban[/FA][/COLOR] [/B]Dans ce tutoriel, je n'ai pas présenté toutes les failles connues car ça reviendrait à écrire un livre. Par exemple il existe une faille permettant d'outrepasser une demande d'authentification par .htaccess si celui-ci [B][COLOR=#ff0000]accepte toutes les requêtes possibles[/COLOR][/B]. [B][COLOR=#00b359][FA]fa-check-circle-o[/FA][/COLOR] [/B]Il faut toujours [B][COLOR=#00b359]vérifier la méthode[/COLOR][/B] de la requête demandée, c'est réellement une règle d'or.[/FONT][/INDENT] [FONT=MyriadPro] [COLOR=#5900b3][FA]fa-border fa-exclamation-circle[/FA][/COLOR] [B][COLOR=#000000][U]Ne jamais se sentir en sécurité[/U][/COLOR][/B] [/FONT] [INDENT][FONT=MyriadPro][B][FONT=MyriadPro-Regular][COLOR=#00b359][FA]fa-check-circle-o[/FA][/COLOR] [/FONT][/B]Mon dernier conseil est de ne jamais se sentir en sécurité, car en effet cela pourrait-être votre plus grande faille et ce conseil est valable pour tout domaine. [/FONT][/INDENT] [CENTER][FONT=MyriadPro] [teams]43[/teams] [SIZE=4][I]Rivals GTP[/I][/SIZE][/FONT][/CENTER] [/QUOTE]
Insérer les citations…
Vérification
Publier la réponse
Forums
Forums généraux
Informatique
Comment combler les failles de sécurité web les plus courantes ?
Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
Acceptez
En savoir plus.…
Haut