Discussion:
Comment font-ils pour cracker
(trop ancien pour répondre)
Sylvain
2008-03-26 21:29:20 UTC
Permalink
lorsque le serveur de pages (pas précisé non plus, mais php ou asp)
accède à la table pour lire (et lire uniquement) il peut y accéder
via un compte utilisateur de la table sans mot de passe et avec un
droit READ uniquement.
Je sens bien que je tourne en rond ...
$link = mysql_connect($host, $nom_base, $mot_de_passe);
non:
$link = mysql_connect($host, $user, $pass);
puis: mysql_select_db($base, $link);

vous faites en effet ceci pour connecter l'utilisateur 'user'
à la base précisée et lui permettre de faire ce que son compte
mysql l'autorise à faire.

concrètement cet 'user' est juste un utilisateur parmi d'autres
également inscrits dans la table des utilisateurs de cette base.

une lecture de manuel de MySQL est peut être opportun !

il est possible de cela vous paraisse du chinois si votre FAI
a configuré la base pour vous et vous a laissé croire que cet
'user' était unique.

il en est évidemment rien, utilisez par exemple MySQL Administrator
disponible dans la suite "MySQL Tools" (dl sur le site mysql), et
créez des utilisateurs supplémentaires si nécessaires, configurer
ensuite le compte anonyme pour autoriser la lecture (elle seule) en
local (et en local seul), après quoi vos pages php contiendront:

$link = mysql_connect();

qui se connecte sur localhost (par défaut) sous le compte anonyme.
un problème réglé, il n'y a plus de passe du tout donc pas à le
protéger.

le compte mysql actuel (vraisemblablement unique) que vous utilisez
est votre compte d'administrateur de la base, vous ne devriez jamais
l'utiliser dans une page php, vous l'utiliserez seulement via MyQSL
Admin. et MySQL Query Browser pour mettre à jour vos pages.

vous pouvez éventuellement avoir des pages privées (un répertoire
protégé par .htaccess) qui contiendra des pages php codant un
accès à mysql avec votre compte admin pour réaliser des opérations
de maintenance de la base via des formulaires html et du traitement
php; cela peut être nécessaire pour des sites moyens à gros nécessitant
de nombreuses opérations, ici si on parle d'une seule table d'url je
ne pense pas que cela soit nécessaire.
Je ne sais pas faire via le compte utilisateur que vous évoquez.
donc ceux que vos devrez peut être créer.
Par ailleurs, lors des visites, des données sont inscrites dans cette base.
généralement un compteur de visites (ou des choses de même importances,
je veux dire non sensibles) - pour cette table la, vous donnerez un
droit d'écriture à l'utilisateur anonymous.

NOTA: il n'existe pas de ng dédié à mysql dans la hiérarchie fr.
où faire suivre ce fil, je duplique et positionne le renvoi sur
fr.comp.lang.php qui me parait le plus judicieux.

Sylvain.
Mickael Wolff
2008-03-27 12:22:22 UTC
Permalink
Post by Sylvain
$link = mysql_connect($host, $user, $pass);
puis: mysql_select_db($base, $link);
Je préfères MySQLi, qui est plus récent et possède des fonctionnalités
indispensables :

$my_con = new mysqli($host, $user, $pass, $base) ;

D'ailleurs PHP6 introduit l'interface mysqlng... on est pas sorti de
l'aberge :)
Post by Sylvain
une lecture de manuel de MySQL est peut être opportun !
Je soutiens :)
Post by Sylvain
$link = mysql_connect();
qui se connecte sur localhost (par défaut) sous le compte anonyme.
<http://fr3.php.net/manual/fr/ref.mysql.php>
On peut configurer PHP pour qu'il utilises d'autres valeurs par défaut.
Post by Sylvain
NOTA: il n'existe pas de ng dédié à mysql dans la hiérarchie fr.
où faire suivre ce fil, je duplique et positionne le renvoi sur
fr.comp.lang.php qui me parait le plus judicieux.
fr.comp.divers ? :) C'est vrai que ça manque, un groupe ne traitant
que des SGBDR, leur administration et leur exploitation.
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
ChP
2008-03-27 19:57:34 UTC
Permalink
...
Post by Sylvain
$link = mysql_connect();
qui se connecte sur localhost (par défaut) sous le compte anonyme.
Voici ce que m'a proposé Sylvain suite à un post où je voulais avoir des
renseignements sur la manière de protéger un mot de passe.

Cette méthode n'utilise pas de mot de passe : c'est parfait.

Ce qui l'est moins, c'est qu'il faut que je crée un nouvel utilisateur
avec des droits "spécifiques".

Or, à la lecture de différents articles, j'ai cru comprendre que pour
pouvoir créer un nouvel utilisateur, il fallait être :

- sur la machine même où se trouve la base de données,
- être un super utilisateur ("host").

Je ne répond à aucun de ces deux critères étant donné que je ne suis
qu'un abonné chez un FAI (Free en l'occurrence).

Dailleurs, en local, sur mon PC, avec "PhPMyAdmin", l'option de créer un
nouvel utilisateur existe alors qu'avec le même outil, sur mon site chez
mon FAI, cette option n'existe pas.

Vous confirmez ?

Merci de vos informations.

Pierre
Sylvain
2008-03-27 21:30:42 UTC
Permalink
Post by ChP
...
Post by Sylvain
$link = mysql_connect();
Cette méthode n'utilise pas de mot de passe : c'est parfait.
Ce qui l'est moins, c'est qu'il faut que je crée un nouvel utilisateur
avec des droits "spécifiques".
Or, à la lecture de différents articles, j'ai cru comprendre que pour
- sur la machine même où se trouve la base de données,
- être un super utilisateur ("host").
cela présupposait en effet de pouvoir créer un compte anonyme, je
ne l'avais pas exclu, vos indications ne l'interdisant pas.

cette creéation peux être faite en local comme à distance si l'on
a le compte "root" de mysql (ce "root" mysql est un utilisateur
privilégié pour la base concerné, il n'a rien à voir avec le compte
unix éponyme).

si votre FAI vous a donné uniquement un compte utilisateur (qui
aura nécessairement tous les droits sur votre base (schéma)) ma
proposition est inapplicable.
Post by ChP
Dailleurs, en local, sur mon PC, avec "PhPMyAdmin", l'option de créer un
nouvel utilisateur existe alors qu'avec le même outil, sur mon site chez
mon FAI, cette option n'existe pas.
ça confirme le point, lister les utilisateurs (avant de pouvoir en
ajouter) impose des droits sur les tables 'user' et 'user_info' du
schéma 'mysql'; votre FAI créé très certainement un schéma avec un
seul utilisateur pour chaque abonné.

selon ce mode vous ne pouvez pas même changer votre mot de passe
via des requetes SQL, vou sle pouvez peut être via un script (une
page) du FAI qui se loge en 'root' sur la base.

si vous avez cette option (de changement) et que votre mot de passe
vous parait faible, optez pour un remplacement avec une chaine plus
longue (certains prestataires limitent trop cette longueur) mais
vous ne pourrez rien faire par vous même qui protège vos tables
contre les attaques exhaustives, vous ne pouvez qu'espérer que le
FAI a deployé des outils contrant de telles attaques.

Sylvain.
ChP
2008-03-28 11:53:03 UTC
Permalink
Sylvain a écrit :
...
Post by Sylvain
si votre FAI vous a donné uniquement un compte utilisateur (qui
aura nécessairement tous les droits sur votre base (schéma)) ma
proposition est inapplicable.
...
Sylvain.
Je me trouve effectivement dans cette situation où je ne peux pas créer
un nouvel utilisateur. Donc, si je veux pouvoir accéder à ma base de
données pour donner des liens d'images (par exemple) à un internaute qui
lui, n'aura pas à donner de mot de passe, implique que j'ai quelque part
sur mon site, crypté ou non, le mot de passe d'accès à la base de données.

Mon problème revient donc à la protection de ce mot de passe. Ce sont
donc ces méthodes qu'il faut que j'approfondisse ?

Cordialement.

Pierre
Sylvain
2008-03-29 12:59:13 UTC
Permalink
Post by ChP
Je me trouve effectivement dans cette situation où je ne peux pas créer
un nouvel utilisateur. Donc, si je veux pouvoir accéder à ma base de
données pour donner des liens d'images (par exemple) à un internaute qui
lui, n'aura pas à donner de mot de passe, implique que j'ai quelque part
sur mon site, crypté ou non, le mot de passe d'accès à la base de données.
Mon problème revient donc à la protection de ce mot de passe. Ce sont
donc ces méthodes qu'il faut que j'approfondisse ?
on est d'accord sur ce qui est possible (plutôt impossible en fait).
je ne suis pas sur que l'on conceptualise à l'identique le reste.

explication: ma compréhension est que vous ne donnez jamais à un
internaute un mot de passe pour accéder à la base (ce que vous
avez indiqué) mais uniquement à php - utilisé pour construire les
pages - enfin qu'il se connecte à la base pour y lire des URLs.

donc, en effet, sur une ou plusieurs pages php, vous avez codé
le mot de passe de connexion à la base dans un bout de script
php qui justement se connecte à cette base.

dès lors ce mot de passe là - qui figure en clair dans la page - n'a
*nul* besoin d'être protégé si le code soure php n'est visible que de
vous; comme indiqué ni apache, ni php (comme défaillance sévère mais
jamais vue) se mettait à envoyer au client le code source php.

concrêtement cela signifie que le mot de passe à protéger est votre
login à votre espace privé sur le serveur du FAI; cet accès sûrement
en FTP vous permet de charger vos pages (contenant le mot de passe
mysql) et évidemment également de lire ces pages.

si ce mot de passe FTP est béton, le mot de passe mysql est de fait
bien protégé; si cet accès FTP utilise un mot de passe très simple
(6 - 8 caractères) c'est lui qu'il faut durcir avec une chaine de
10, 12 ou plus caractères; la limitation en longueur peut venir
d'une contrainte mise en place par le FAI (via la formulaire fourni).

s'il vous le pouvez également, transferez vos pages en mode FTPS
plutôt qu'en FTP.

Sylvain.

Mickael Wolff
2008-03-27 12:22:22 UTC
Permalink
Post by Sylvain
NOTA: il n'existe pas de ng dédié à mysql dans la hiérarchie fr.
où faire suivre ce fil, je duplique et positionne le renvoi sur
fr.comp.lang.php qui me parait le plus judicieux.
Je viens de m'appercevoir qu'il existe : fr.comp.applications.sgbd
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Sylvain
2008-03-27 19:57:34 UTC
Permalink
Post by Mickael Wolff
Post by Sylvain
NOTA: il n'existe pas de ng dédié à mysql dans la hiérarchie fr.
où faire suivre ce fil, je duplique et positionne le renvoi sur
fr.comp.lang.php qui me parait le plus judicieux.
Je viens de m'appercevoir qu'il existe : fr.comp.applications.sgbd
certes, le fil est issu de fr.misc.crypto. car le PO essayait de
chiffrer son mot de passe présent dans ses pages php via qlq
opérations algébriques.

la solution à son problème (ses craintes plus que pbs avérés d'ailleurs)
me semble tenir plus de php et de la config de base de sa base que d'une
notion pointue portant sur un SGBDR précis.

Sylvain.
Continuer la lecture sur narkive:
Loading...