IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

question sur la fonction crypt et le fichier .htpasswd


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut question sur la fonction crypt et le fichier .htpasswd
    Bonjour,
    1/ Je viens de suivre un tuto sur le php et j'avais une question sur la manière de remplir le fichier .htpasswd lorsque l'on veut empêcher l'accès à un répertoire.
    Si je ne précise pas de salt dans la fonction crypt, comme c'est indiqué dans le tuto, le hash change à chaque fois pour la même chaine de caractères entrée en paramètre. Pourtant c'est ce hash que l'on doit indiqué dans le fichier .htpasswd. C'est sûrement une question bête mais je ne comprends pas comment le système peut dire par la suite que le mot de passe est le bon si en fait on peut générer plein de hash différents pour un même mot de passe. Est-ce que vous pouvez m'éclairer là-dessus ?.

    2/ Une petite question subsidiaire : Si je gère un système de membre authentifié sur mon site, avec des groupes d'utilisateurs, est-ce que je dois aussi en parallèle utiliser ce système .htaccess ou bien est-ce qu'il y a moyen de ne pas avoir à gérer des mots de passes de connexion dont les hash seraient stockés en base de données et des mots de passes pour permettre l'accès à certains répertoires dont les hash seraient stockés dans le fichier .htpasswd ?

    Cordialement,

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    1 - le salt est inclus au début de la chaîne chiffrée
    http://php.net/manual/fr/faq.passwor....storing-salts

    2 - je n'ai pas bien compris ce que tu veux faire.
    Si tu parles d'utilisateur authentifié, d'espace membre etc. tu parles plutôt d'authentification gérée par PHP avec un mot de passe stockée dans une base de donnée en général.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    - Si tu ne fournis pas de salt, crypt va en générer automatiquement pour toi. Le problème est que c'est un salt faible donc non sécurisé.

    - Ce tutoriel n'est plus à jour. La fonction crypt n'est plus recommandée. À la place, il faut utiliser password_hash(), qui fait la même chose, mais en plus simple et plus sécurisé: elle génère directement un salt fort.

    - Je ne comprends pas bien ta question numéro 2.

  4. #4
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut
    Merci pour vos réponses,
    J'ai vu effectivement maintenant où se trouvait le salt et qu'effectivement il vaut mieux utiliser password_hash() plutôt que crypt().

    Je vais retenter d'expliquer mon second point car il n'est à l'évidence pas assez clair :-) :
    Mon site va donc comporter une authentification afin d'autoriser ou non l'accès à certaines pages et d'avoir un espace membre entre autres choses. Et je me demandais s'il est donc nécessaire de gérer EN PLUS des fichiers .htaccess et .htpasswd pour n'autoriser l'accès à certains répertoires du site qu'à certains utilisateurs ? Peut-être que je mélange l'accès à des pages et l'accès à des répertoires ?

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    On peut effectivement utiliser un htaccess pour restreindre l'accès à un répertoire en plus de l'authentification par base de données. Amember v3 fait ça par exemple, mais c'est assez complexe: à chaque nouvel utilisateur, il faut ajouter son compte dans le htpasswd et ensuite le supprimer lorsque l'utilisateur n'a plus de compte; et s'il y a différents niveaux d'accès (complets, limités à quelques répertoires, un seul répertoire) ça devient vite compliqué.

    Le plus simple est de n'utiliser que l'authentification par base de données (avec password_hash!!) et de séparer complètement l'application et le système de fichiers. Au lieu de proposer les fichiers à télécharger directement, tu les fais passer par un script qui utilise readfile et qui vérifie les droits de l'utilisateur avant d'autoriser le téléchargement.

    Ça te permet en outre de mettre tes fichiers dans un emplacement au-dessus de l'emplacement web (le répertoire www, web, htdocs ou public_html) afin qu'ils ne soient pas accessibles directement avec un simple lien.

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Citation Envoyé par jmclej Voir le message
    Peut-être que je mélange l'accès à des pages et l'accès à des répertoires ?
    Oui, ce sont deux choses différentes qui doivent être pensées distinctement.

    D'un côté tu as des scripts qui permettent de modifier des pages et dont l'accès doit être protégé par une variable de session qui est définie lors de l'authentification. Ici pas besoin de restreindre l'accès au répertoire qui contient ces scripts puisque les scripts eux-mêmes sont protégées par la variable de session et ne renverront rien ou un message d'erreur si elle n'est pas définie.

    D'un autre côté tu as des ressources sous forme de fichiers pdf, photo, vidéos etc. Si tu veux restreindre l'accès à certaines ressources confidentielles, le plus simple est de les mettre dans un ou plusieurs répertoires protégés par un .htaccess avec la mention deny from all ou alors en dehors du répertoire www. Ainsi toute tentative d'accès à ces fichiers depuis une URL sera impossible.
    Et comme le dit Tsilefy il te suffiras de faire afficher ces ressources avec un readfile uniquement depuis les scripts qui sont protégés par la variable de session définie lors de l'authentification.

    C'est beaucoup plus simple que de gérer dynamiquement des droits d'accès à des répertoires. Et c'est ce principe d'authentification php dont parlait aussi sabotage dans son point numéro 2.

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/03/2009, 14h07
  2. Question sur la fonction recv
    Par Mr_Chut dans le forum Réseau
    Réponses: 14
    Dernier message: 15/09/2006, 12h43
  3. Question sur les fonctions "send()" et "recv(
    Par damien99 dans le forum MFC
    Réponses: 6
    Dernier message: 10/02/2006, 20h47
  4. Réponses: 1
    Dernier message: 08/02/2006, 11h18
  5. Réponses: 2
    Dernier message: 21/12/2005, 09h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo