Nils Posté 30 Janvier 2005 Posté 30 Janvier 2005 Bonjour à toutes et à tous, Et bien voilà, mon inscription à Webmaster Hub, est ma première à un forum. Merci de bien vouloir être indulgent, je m'y perds un peu dans tous ces couloirs et toutes ces portes ... Sinon ? Et bien, 39 ans (bientôt !) et pas toutes ses dents ! Je suis motard et musicien très amateur (j'aime bien chanter avec ma guitare...). Et j'habite à Vitrolles (13127 - France). Je bosse dans le monde micro-informatique et réseaux locaux depuis 92. Maintenant, pourquoi je suis là ? J'ai quitté le développement en quittant l'école (1991/ lang C), et je le retrouve maintenant avec HTML - JavaScript - PHP - MySQL. Mes souvenirs en C, m'aident beaucoup, mais il me manque encore tant ! Surtout quand j'essaye de regarder tout ça d'un peu plus haut et de me sortir le nez du code. Je n'ai pas vraiment trouvé le bon forum pour poster ma problématique, alors j'espère qu'on ne m'en voudra pas trop de le faire ici, j'imagine que je vais être "déplacé" ... Voilà, Comment faire en sorte qu'il n'y ai que : le propriétaire d'un site donné (droits root sur sa base MySQL), ET UN visiteur donné (et lui seul), qui ne puissent avoir accès aux données DU visiteur en question (stockées dans la base MySQL). En effet, le propriétaire d'un site, doit assurer à ses clients : que leurs data perso ne sont lisibles que : par LUI MEME et EUX MEMES, et par PERSONNE D'AUTRE ! J'ai beau retourner les droits de MySQL dans tous les sens, je ne trouve rien. Faut-il créer une nouvelle table perso pour chaque nouvel inscrit ? (comment interdire aux autres d'y accéder, de la lire) Mais comment créer cette table, avec quel compte admin, et possédant quels droits ? Car des mots de passes (MySQL) "en dur" dans du code PHP sont lisibles par tous ! J'espère m'être fait comprendre. J'imagine qu'il y a une solution à mon pb, mais franchement, je ne vois la méthode pour arriver à ça. Un grand merci pour votre aide ... Nils.
Dan Posté 30 Janvier 2005 Posté 30 Janvier 2005 Bonjour Nils, et bienvenue à bord ! A mon avis, la meilleure manière de procéder dépendra du type d'information que tu dois enregistrer. Mais il me semble qu'elle passe par un login/mot_de_passe pour chaque utilisateur, comme sur un forum. Il faut donc que l'accès à la fiche client soit sujette à l'identification de celui-ci. Chaque fiche client pouvant donc comporter un login et mot de passe. C'est donc le code php qui veillera à donner les infos du client et pas les autres, après validation de l'utilisateur. C'est peu similaire au fonctionnement d'un forum comme celui-ci : chaque membre a accès à sa messagerie personnelle, et personne d'autre ne peut aller y mettre son nez. Pour root c'est simple, vu qu'il a par défaut accès à tout. De toutes manières, les mots de passe enregistrés dans une page en .php ne seront pas lisibles sauf si tes clients ont accès aux sources à travers un protocole différent de http (par exemple en ftp). Le code php est interprété par le serveur, et celui-ci ne transmet que le html résultant de son interprétation, jamais le code php. Si tu crées une page php qui reprend ces mots de passe, assures toi qu'elle soit bien nommée en .php et non en .inc comme je l'ai vu faire. Dans ce dernier cas, elle serait transmise sans interprétation:(
Nils Posté 30 Janvier 2005 Auteur Posté 30 Janvier 2005 Merci beaucoup pour me souhaiter la bienvenue, c'est magique ! ... (Franchement c'est magique !) Bon, Tu as raison, c'est vrai que j'avais oublié que mes pages étaient interprétées côté serveur, et que seul le résultat était fourni au client ! Je viens de vérifier en affichant le source de cette page là, où je suis en train de taper, et pas une seule trace de PHP ! Donc ok là dessus. Donc, peux-tu me confirmer que : 1) mon fichier mes_vars_globals.inc.php qui contient mes mots de passe, qui est appelé par mes pages (include_once), ne peut pas être lu directement ou indirectement (seul méthode => FTP). 2) que le contenu de ma variable $password ne peut pas être intercepté ! => quel est la meilleur méthode pour faire arriver le contenu de $password saisie dans un formulaire (méthode post) jusqu'à ma base mysql sans qu'elle puisse être lue par un tier ? Que du SSL ? (ou SSH, je ne fais pas encore bien la différence). J'imagine que tant que le flux de data (non crypté) peut être intercepté et lu, le contenu des vars aussi ! ? ===== Ensuite, pour la gestion de l'environnement personnel, dois-je créer des comptes pour mes nouveaux clients dans : mysql/user, on bien je peux mettre ça dans une table à moi. Mais le problème que je me pose, c'est que, tant que l'utilisateur parcours ma base via mon site tout va bien, sa navigation est bornée par mes pages. Il utilise un compte restreint, stocké dans mes_vars_globales.inc.php et peut lire et écrire son espace, canalisé par mes pages. Mais peut-il paramétrer un PHP-MyAdmin, avec son compte et son mot de passe, qu'il connait vu qu'il s'est créé un compte chez moi, et de là, voir les datas des autres clients, puisqu'il n'est plus canalisé par mes pages. Bon, je ne sais pas si tu arrives à me suivre, si mes intérogations sont bien claires, j'espère que oui. J'imagine qu'il y a un verrou à tout ça quelque part, mais comme je ne le vois pas, ça me gène ! à toute, merci, Nils. (Je vais dîner, rapidement, j'espère te retrouver tout à l'heure, sinon, à plus) (encore merci) Je pense encore ... Dis moi, dans ma base mysql, j'ai mis, % à chaque fois qu'il fallait choisir host, mais c'est peut-être bien là qu'est le verrou, si je mets le nom du serveur sur lequel est hébergé ma base, il n'y a que via ce serveur qu'on puisse y faire des modifs, et donc un PHP-MyAdmin hébergé ailleurs ne peut pas y exécuter ? C'est ça ? Dis moi si je me trompe, MAIS JE CROIS BIEN QUE OUI !!! je mettais % pour le host, car je croyais qu'en mettant le nom du serveur où était hébergé ma base, les visiteurs de l'internet, ne venant pas de ce host là, ne pourraient rien y écrire. Ce doit être bien là que j'ai fais fausse route, non ? bon, à toute... merci. nb.
Arlette Posté 30 Janvier 2005 Posté 30 Janvier 2005 Je suis motard et musicien très amateur (j'aime bien chanter avec ma guitare...). Et j'habite à Vitrolles (13127 - France). Bonjour et bienvenue sur le Hub, hummm, motard et des bouches du Rhône (pour ne pas dire de la banlieue Marseillaise pour ce qui ne connaissent pas ), je sens que Wambli et Bug vont venir en deux roues pour t'acceuillir
Dan Posté 30 Janvier 2005 Posté 30 Janvier 2005 Je te confirme que ton fichier ne peut pas être lu... en tout cas pas la source (à part par ftp). Je te confirme que le contenu de ta variable $password ne peut pas être divulgué Pour transmettre les données, il FAUT utiliser une méthode POST (surtout pas GET qui mettrait les infos dans l'URL) Tes utilisateurs ne pourraient pas utiliser PhpMyAdmin ou tout autre outil, vu que leurs accès ne sont pas des accès mySql, mais simplement des login/mot_de_passe faisant partie d'une table standard (et non la table contenant les privilèges mySql). Seul root ou l'utilisateur que tu auras défini pourra lire cette table. C'est à travers cet utilisateur que tes scripts accèderont aux infos. L'accès à mySql au départ d'un autre host n'est possible que s'il est expressément permis. Par défaut il ne l'est pas, si je ne me trompe pas. Si tu es en hébergement dédié, cela se paramètre au niveau de /etc/my.cnf (fichier config de mysql) Le mieux est d'interdire l'accès réseau et ne laisser que localhost (si l'hébergement le permet) ou le nom du host où tourne les scripts php. Voila, te voila rassuré (du moins j'espère) Dan PS: j'ai déplacé ton post dans php-mysql vu la teneur de celui-ci. Jai laissé un marqueur dans le forum initial pour quelques jours.
Nils Posté 30 Janvier 2005 Auteur Posté 30 Janvier 2005 Re, Bon et bien tout d'abord, BIG MERCI pour votre accueil, pour mon premier post, c'est trop cool !!!! Des réponses rapides, de qualités et tout et tout, et en plus des réponses +++ => Ma chère Arlette, un grand merci pour ton petit coucou !!! Et oui, tarmo, alors je sais pas, si y en a dans l'coin qui connaissent bien la région... moi pas trop encore (je suis arrivé en décembre). Sinon quand je connais pas, je repère le soleil quand je pars, et je "calcule" sa trajectoire pour sa position pour le retour et je rentre comme ça ..., pour le reste, c'est la route qui me guide ... J'adore rouler ! Bon, Arlette, tu viens de gagner une place de passagère sur un 1150 RS ! Alors je sais pas si vous faites des balades PHP/MySQL ... sur les routes de Provence ... see you soon ...
Nils Posté 30 Janvier 2005 Auteur Posté 30 Janvier 2005 Pour Dan, Bon et bien un grand merci pour toutes ces infos en si peu de temps !!! Bon, c'est vrai je commence à être rassuré, tout le code que j'ai déjà pondu n'est pas perdu ! Bon, j'ai une autre question concernant les sessions, alors je vais trouvé le bon forum pour la poster (PHP qq chose j'imagine ...) Bon tu me permets de résumer ce que tu m'as dit ? 1=> personnes ne peut attaquer ma base avec un autre outil que mon site www. 2=> tout le code contenu dans mes pages est illisible, on voit que le résultat, pour peu que j'affiche pas le mot de passe, no problemo (c'est pour ça qu'on doit le taper 2x en caractères cachés) 3=> je dois socker dans une table PERSO, les comptes et mots de passe de mes users. (Encryptés par MySQL ?, là j'ai un doute, non, car je ne suis pas capable de les encrypter à l'envoi, je connais pas la fonction PHP, mais elle doit exister j'imagine.) 4=> Et enfin, je peux utiliser un compte MySQL particulier (droits suffisants) stocké en clair dans "mes_vars_globales.inc.php" pour que mes users puissent lire et écrire leur datas respective. Merci de tes validations. Nils.
Sarc Posté 30 Janvier 2005 Posté 30 Janvier 2005 Bonjour Nils, Je vais essayer de répondre a tes questions sans te perdre (et me perdre avec... ) 1) A priori, vu le nombre de sites en PHP qu'il y a sur le net, et le peu d'attaques, c'est que le tout est bien sécurisé, donc vraiment pas d'inquiètudes majeures à avoir, juste quelques vérifications de ton code en lui même, pour éviter certaines failles faciles... 2) Si on le tape en caractères cachés, c'est je pense pour éviter que la personne au dessus de l'épaule ne lise et retienne le mot de passe, d'une part, et si on le tape deux fois c'est pour éviter une faute de frappe. Dans le script PHP qui vérifie ton formulaire pour rentrer les infos dans la BDD, il faut vérifier que les deux mots de passe tapés sont bien les mêmes 3) Je ne pense pas qu'il soit obligatoire de crypter les mots de passe... En tout cas, je n'y connais rien sur l'encryptage, et je m'en porte bien pour l'instant 4) Pour lire leurs informations ? Je pense qu'il serait plus judicieux de créer un script PHP : un formulaire de login, pour être reconnu par ton site, puis une page avec inscrit dessus toutes les informations nécessaires. Par exemple, sur le hub, quand tu arrives, tu dois rentrer ton pseudo et ton pass, le site te reconnait, puis tu peux accéder à ta messagerie : si tu as bien été reconnu, tu peux lire tes messages. Sinon, tu ne peux rien lire Voilà, j'espère avoir répondu aux bonnes questions
Nils Posté 30 Janvier 2005 Auteur Posté 30 Janvier 2005 Bonsoir Sarc, Oui, je suis bien d'accord, si j'ai des problèmes de sécurité, ça viendra bien entendu de mon code et pas de PHP !!! on est bien d'accord, et c'est bien pour ça (mon code) que je me pose tant de questions, je débute ! Oui, c'est vrai, pour les chars cachés, c'est pour les yeux indiscrets... Et tu ajoutes donc que toi, dans ta base Mysql tu stockes tout en clair et que ça va très bien comme ça ! Bon maintenant, j'ai un compte et un mot de passe user stockés dans une table perso, j'ai un user qui s'est authentifié correctement et qui est reconnu. Comment je traine tout au long de sa visite (donc de mes pages), sa présence ? En gardant sa trace dans une variable de session par ex ? son @ email par exemple ? ou autrement ? Merci Sarc. Nils.
Sarc Posté 31 Janvier 2005 Posté 31 Janvier 2005 Bonjour Nils, Pour ce qui est de poser des questions, il n'y a pas de problèmes. Il est surtout conseillé, pour la sécurité, de protéger les formulaires contre d'éventuels scripts... Pour cela, tu peux utiliser la fonction htmlspecialchars($variable);, qui te transforme les caractères comme < et > en code HTML Et tu ajoutes donc que toi, dans ta base Mysql tu stockes tout en clair et que ça va très bien comme ça ! Personne autre que moi n'a accès a ma base de donnée, et personne ne doit y avoir accès, c'est bien la finalité de la chose... Donc où est le problème ? Bon maintenant, j'ai un compte et un mot de passe user stockés dans une table perso, j'ai un user qui s'est authentifié correctement et qui est reconnu. Comment je traine tout au long de sa visite (donc de mes pages), sa présence ? En gardant sa trace dans une variable de session par ex ? Tout a fait : pour plus d'infos, tu peux visiter les pages : phpdebutant : espace membre phpdebutant : les sessions webdiz : les sessions En espérant t'avoir aiguillé au bon endroit... En tout cas, phpdebutant surtout m'a pas mal servi dans ma formation personnelle, et je n'ai pas ressenti que je faisais une erreur en apprenant grâce à ce site, donc je te souhaite la même chance... Sarc
Anonymus Posté 1 Février 2005 Posté 1 Février 2005 Pour ce qui est des mots de passe cryptés dans la base de données : Si, par exemple, tu laisses à un stagiaire la base de données, où figurent des comptes client très importants, tu peux avoir envie que cette personne, en qui tu peux n'avoir que peu de confiance, ne parte pas avec tous les comptes de tes clients. Donc : Dans ce scénario, tu laisses bien un accès, via phpmyadmin par exemple, à quelqu'un de ton équipe, aux comptes gérés sur la base de données. Mais, tu préfères sécuriser ces données, pour ne pas 'tenter le diable'. Dans ce cas, il peut être intéressant de stocker les mots de passe en les cryptant. Mais si tu es le seul à avoir accès à la base de données, alors ce n'est pas trop la peine de s'en soucier pour l'instant.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant