8791 sujets

Développement web côté serveur, CMS

Bonjour !

C'est encore moi, je repose une question ici face à un probleme de php que je rencontre, car j'ai déjà trouvé de bons conseils sur ce forum !

Donc, concrètement, je suis en train de créer un site qui est fini, il me manque juste une page privée, qui ne sera accessible qu’après avoir entré un code et mot de passe dans un formulaire.
J'ai une base de données mysql avec une table contenant un espace mot de passe et un espace identifiant, ces codes sont uniques. En fait, il n'y a qu'un code, que ma cliente donnera à ses clients pour qu'ils puissent se connecter via un formulaire et ainsi accéder à certains documents.

Mon problème est que je n'arrive pas à développer mon script en php pour accéder à cette page ...
J'ai pourtant "googlé" toute la journée, mais rien, tout les scripts que je teste ne fonctionnent pas ...

Merci ! Smiley smile
Modérateur
Salut,

C'est simple et basique :
- si les données saisies arrivent au server ($_POST)
- filtrer les données selon l'usage habituel (htmlspecialchars, magic_quote, etc.)
- faire une requete de ce type :

SELECT 
	password
FROM 
	users 
WHERE 
	email = $_POST['email']

- hasher en sha1 ou md5 les données du champ password saisie :
$passwd = sha1($_POST['passwd'])

- verifier si les données saisies sont corrects :
* Est ce que le nombre de résultat de la requête est de 1 ?
* Est ce que password en base est strictement identique à la donnée saisie (il est évident qu'en base, les données du champ passwd ne sont pas en clairs mais hashées en sha1 ou md5.) ?
Si les deux conditions sont remplies, tu fais une redirection vers ta page admin avec un système de cookie pour la connexion automatique et déco automatique
Sinon, tu fais une redirection vers ta page login et tu initialises un message de session indiquant que les données saisies sont erronées.

Pour info, le md5 n'est pas du tout un bon hashage. il est facilement crakable. Sur le net, il y a des outils qui permettent de remettre en ordre des md5. Il y a pas mal de fonctions de hashage : sha1, sha512, sha256, tiger192, etc. La plus simple et la plus facile à mettre en place reste sha1.
Modifié par niuxe (18 Dec 2013 - 22:47)
Bonjour et merci !

Le problème est que je n'y comprends rien ... je sais juste faire un formulaire d'envoi mail avec Dream et du copié collé, mais pour ce qui est d'ecrire du php, j'en suis malheureusement incapable ... Smiley decu
Tu n'aurais pas un code déjà écrit à pécher je ne sais ou ?
Salut, sur anciennement le SDZ, il y avait un petit TP rapide à propos d'une page protégée en PHP, tu peux t'en inspirer pour ton besoin, c'est ici. Attention ce n'est qu'une piste, ce qu'a dit niuxe reste à implémenter, mais tu as un début.
Petite remarque cependant, je trouve ça un peu léger de faire cela pour un/une client/e sans avoir les compétences pour le faire, d'autant que c'est une partie "sécurisée", ce n'est pas très pro.
Après, une autre solution, plus simple dans ton cas, passer par un .htaccess et un .htpasswd, tu peux te renseigner ici, ça te permet de sécuriser l'accès assez simplement et sans faire de programmation.
Bon courage Smiley smile
floreo a écrit :
Salut, sur anciennement le SDZ, il y avait un petit TP rapide à propos d'une page protégée en PHP, tu peux t'en inspirer pour ton besoin, c'est ici. Attention ce n'est qu'une piste, ce qu'a dit niuxe reste à implémenter, mais tu as un début.
Petite remarque cependant, je trouve ça un peu léger de faire cela pour un/une client/e sans avoir les compétences pour le faire, d'autant que c'est une partie "sécurisée", ce n'est pas très pro.
Après, une autre solution, plus simple dans ton cas, passer par un .htaccess et un .htpasswd, tu peux te renseigner ici, ça te permet de sécuriser l'accès assez simplement et sans faire de programmation.
Bon courage Smiley smile


100% avec ce posteur.

De plus, si tu suis les conseils te pointant vers le SHA1, sache que l'algorithme de hashage SHA-1 est connu comme étant très peu résistant aux attaques de type brute force, et qu'une preuve d'attaque par collision existe. Donc, pas sécurisé du tout.

Trois conseils:
- Salt & pepper. Rajoute une chaine aléatoire pour le site, et une autre chaine aléatoire dépendant du membre au mot de passe. Ceci te permet d'empêcher l'usage de rainbow tables
- Changement d'algo. bcrypt est pas mal, scrypt est encore mieux, PBKDF2 est encore mieux
- Embauche un pro pour te sécuriser le tout si tu y tiens vraiment