Thierry
2007-02-17 11:53:45 UTC
Bonjour,
Sur une site php en cours de création, j'ai un espace membre accessible
par WWW-Authenticate: Basic.
J'essaye de sécuriser raisonnablement l'accès à cet espace membre, via
le script php. Le fait d'y accéder ne serait pas catastrophique, mais
l'authentification permet d'accéder à un second niveau de droit pour
administrer le site (modification de pages via une base de données).
L'accès frauduleux à ce second niveau de droit serait nettement plus
ennuyeux.
J'ai donc prévu :
- Un très petit nombre de personnes pourra accéder à ce niveau de droit
pour éditer le site (maxi 3 personnes).
- Rien sur le site ne permet de deviner à priori l'existence de cette
fonctionnalité (seul l'accès membre est indiqué).
- Les login/mdp pour accéder aux droits d'éditions seront plus solides
que les autres (login pas facile à deviner ; mots de passe de 8
caractères avec chiffres et signes).
Après avoir fait quelques recherches (je n'y connais pas grand chose à
la base), je soupçonne deux principaux risques :
1 - L'attaque par brute force ou dictionnaire. Il semble facile à
n'importe qui de trouver sur internet un programme qui fait ça
automatiquement.
-> Pour contrer ce pb, l'implémentation d'un time out semble l'idéal. A
priori, ça nécessite de repérer les demandes d'authentification qui
proviennent de la même source, ce qui semble difficile en php (l'IP,
visiblement, ça ne fonctionne pas, et je ne souhaite pas ennuyer les
utilisateurs avec un cookie obligatoire).
J'ai donc placé un sleep(1) avant la fonction d'authentification (celle
qui envoi le "header('WWW-Authenticate: Basic...". Une attente d'une
seconde me parait peut contraignante pour les utilisateurs, et j'imagine
peut-être à tord que ça limite le nombre d'essai à 60 par minute, ce qui
me semble compliquer la tâche au script-kiddie qui veut jouer.
A priori, le script-kiddie trouvera peut-être le moyen d'accéder à
l'espace membre, ce qui ne sera encore une fois pas très grave, mais
l'accès aux fonctions d'éditions seront à priori beaucoup plus difficile
voir quasi-impossible.
A votre avis, est-ce une idée idiote, utile, inutile, quelles sont les
failles de mon raisonnement, etc. (et accessoirement pourquoi ?).
2 - La seconde attaque potentiel, c'est le sniffage de paquets (concept
que je n'est pas très bien compris), pour récupérer login et mots de
passe puisqu'ils sont transmis en clair par la méthode "basic".
-> De ce que j'ai cru comprendre, c'est une méthode nettement plus
complexe à mettre en oeuvre, et il me parait assez improbable qu'un
petit site associatif soit la cible d'une telle attaque. Me trompe-je ?
Merci de vos lumières.
Sur une site php en cours de création, j'ai un espace membre accessible
par WWW-Authenticate: Basic.
J'essaye de sécuriser raisonnablement l'accès à cet espace membre, via
le script php. Le fait d'y accéder ne serait pas catastrophique, mais
l'authentification permet d'accéder à un second niveau de droit pour
administrer le site (modification de pages via une base de données).
L'accès frauduleux à ce second niveau de droit serait nettement plus
ennuyeux.
J'ai donc prévu :
- Un très petit nombre de personnes pourra accéder à ce niveau de droit
pour éditer le site (maxi 3 personnes).
- Rien sur le site ne permet de deviner à priori l'existence de cette
fonctionnalité (seul l'accès membre est indiqué).
- Les login/mdp pour accéder aux droits d'éditions seront plus solides
que les autres (login pas facile à deviner ; mots de passe de 8
caractères avec chiffres et signes).
Après avoir fait quelques recherches (je n'y connais pas grand chose à
la base), je soupçonne deux principaux risques :
1 - L'attaque par brute force ou dictionnaire. Il semble facile à
n'importe qui de trouver sur internet un programme qui fait ça
automatiquement.
-> Pour contrer ce pb, l'implémentation d'un time out semble l'idéal. A
priori, ça nécessite de repérer les demandes d'authentification qui
proviennent de la même source, ce qui semble difficile en php (l'IP,
visiblement, ça ne fonctionne pas, et je ne souhaite pas ennuyer les
utilisateurs avec un cookie obligatoire).
J'ai donc placé un sleep(1) avant la fonction d'authentification (celle
qui envoi le "header('WWW-Authenticate: Basic...". Une attente d'une
seconde me parait peut contraignante pour les utilisateurs, et j'imagine
peut-être à tord que ça limite le nombre d'essai à 60 par minute, ce qui
me semble compliquer la tâche au script-kiddie qui veut jouer.
A priori, le script-kiddie trouvera peut-être le moyen d'accéder à
l'espace membre, ce qui ne sera encore une fois pas très grave, mais
l'accès aux fonctions d'éditions seront à priori beaucoup plus difficile
voir quasi-impossible.
A votre avis, est-ce une idée idiote, utile, inutile, quelles sont les
failles de mon raisonnement, etc. (et accessoirement pourquoi ?).
2 - La seconde attaque potentiel, c'est le sniffage de paquets (concept
que je n'est pas très bien compris), pour récupérer login et mots de
passe puisqu'ils sont transmis en clair par la méthode "basic".
-> De ce que j'ai cru comprendre, c'est une méthode nettement plus
complexe à mettre en oeuvre, et il me parait assez improbable qu'un
petit site associatif soit la cible d'une telle attaque. Me trompe-je ?
Merci de vos lumières.
--
Thierry
Thierry