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

Apache Discussion :

.htaccess avec une durée de session ?


Sujet :

Apache

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 11
    Points
    11
    Par défaut .htaccess avec une durée de session ?
    Bonjour à tous,

    Je cherche à ajouter une durée de session dans un htaccess.
    Vous avez une idée ? J'ai essayé d'ajouter dans le htaccess des bouts des codes trouvés sur le web comme ci-dessous, mais sans succès, je suis nul en programmation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <IfModule  mod_php5.c>
       php_value session.gc_maxlifetime 200
    </IfModule>
    Merci beaucoup pour vos conseils.

    Avec mes meilleurs voeux pour cette nouvelle années !
    PierreR75

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Le .htaccess n'est pas forcément la solution :
    • ça implique que PHP est exécuté en tant que module Apache. Sinon, en CGI, il faut un équivalent (extension htscanner par exemple) - cf phpinfo.
    • il vous faut également être autorisé par le serveur à redéfinir ce genre de paramètres localement (implique, au niveau de la configuration d'Apache, que votre répertoire en hérite via AllowOverride avec, au minimum, la valeur Options)

    Sinon, il vous suffit de redéfinir ce paramètre en début de script via ini_set.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 11
    Points
    11
    Par défaut
    Bonjour et merci pour votre réponse.

    J'ai lu ça en effet, que PHP devait être exécuté en tant que module Apache mais je ne sais pas vraiment ce que cela veut dire, ni ce que cela implique... Idem pour : AllowOverride, ini_set...

    Pouvez-vous m'en dire un peu plus parce que je ne suis pas programmeur ?

    J'ai déjà un espace en libre accès et un autre protégé par un htaccess, ça fonctionne très bien, j'aimerai juste limiter la durée de la session...
    Je suis sur un hébergement mutualisé chez OVH et la hot line m'a confirmé que c'était possible, hélas, sans me dire comment...

    Merci encore pour votre aide.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    En ce cas, je crois que vous n'avez pas le choix : vous devez utiliser la fonction ini_set en début de vos scripts afin de modifier la valeur de ce paramètre.
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    ini_set('session.gc_maxlifetime', '200');

    Mais étant donné le fonctionnement des sessions, ce n'est probablement pas le seul paramètre que vous aurez à modifier (voir la documentation : l'"expiration" étant basée sur des "probabilités").

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 11
    Points
    11
    Par défaut
    Arf ! C'est décidément plus compliqué que je ne le pensais...
    Votre réponse scuscite de nouvelles questions !
    De quels sripts parler-vous ? Me faut-il des fichiers .php ?
    Pour l'intant, je n'ai que des fichiers .htm, même pour les répertoires à accès restreints. Cela veut-il dire que je dois transformer mes fichiers .htm en .php et ajouter la ligne : ini_set('session.gc_maxlifetime', '200'); ?
    A propos du 200, j'avais mis cette valeur juste pour voir le fonctionnement, j'aimerai une durée de 30mn environ...

    Merci infiniment

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    C'est déjà de l'ordre de 30 minutes par défaut (24), à moins que ça n'ait été changé chez ovh.

    C'est bien dans vos scripts qu'il vous faut la redéfinir mais vos fichiers HTML ne faisant pas intervenir une session, je ne vois donc pas en quoi il vous faut les modifier. Ça ne concerne donc que les scripts faisant intervenir une session (avant session_start).

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 11
    Points
    11
    Par défaut
    Merci pour votre patience julp,

    Mon site est un site on ne peut plus basique, il n'y a ni base, ni script.
    Il est juste composé d'une série de fichiers .htm dans un répertoire en libre accès et d'une autre série de fichiers .htm dans un répertoire protégé avec le htaccess ci-dessous, et un htpasswd : identifiant:motdepassecripte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    AuthUserFile /home/xxxx/xxxx/xxxx/xxxx/.htpasswd
    AuthGroupFile /dev/null
    AuthName "ACCES RESERVE"
    AuthType Basic
    <Limit GET POST>
    require valid-user
    </Limit>
    Ou faut-il donc donc que je mette cette fameuse ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ini_set('session.gc_maxlifetime', '200');

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Ce n'est pas du PHP et ça n'a rien à voir : ça ne fonctionnera donc pas. L'authentification HTTP, c'est le client qui la gère (et qui la retransmet).

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 11
    Points
    11
    Par défaut
    Je ne suis pas sûr de bien comprendre votre réponse...
    Voulez-vous dire qu'il n'y a pas de solution ?

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Non, pas avec ce mécanisme (seul).

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 11
    Points
    11
    Par défaut
    Et coment le mettre en oeuvre ?
    Faut-il que je transforme mes pages html en php en y ajoutant du code ?
    Que j'installe une base mysql ? php5 ? Tout ces outils sont dispos chez OVH...
    En plus, ce site ne comporte que peu de pages...

    Merci infiniment pour toute aide me permettant d'y arriver !

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Citation Envoyé par PierreR75 Voir le message
    Et coment le mettre en oeuvre ?
    Avec les sessions PHP.

    Citation Envoyé par PierreR75 Voir le message
    Faut-il que je transforme mes pages html en php en y ajoutant du code ?
    Oui.

    Donc du PHP. Et pour stocker vos comptes, vous avez le choix (fichier - le fichier .htpasswd pourrait être conservé si l'algorithme de hachage est compatible, xml, base de données, ..).

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 11
    Points
    11
    Par défaut
    Bonjour et merci pour ces infos,

    Mon problème c'est que je ne suis pas développeur...
    En fait, je m'attendais à ce qu'il existe des bouts de codes qu'il suffit d'adapter à ses propres besoins.
    Le fait d'ajouter une durée de session à un htaccess qui gère des authentifications me paraissait être une fonctionnalité courante...

    Merci encore
    PierreR75

  14. #14
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Il y a 2 choses à ne pas confondre : authentification et session. L'authentification consiste à donner un login et un mot de passe pour être reconnu ; une session est un stockage côté serveur d'informations associées à un certain navigateur. Ce sont deux choses a priori distinctes mais qu'on peut associer grâce à des outils de programmation du style PHP, ASP.NET, etc. de manière à pouvoir associer des données côté serveur non pas à un navigateur mais à un utilisateur. De ces deux choses, seules les sessions peuvent avoir une durée de vie limitée, pas l'authentification. Le fait qu'on soit obligé de se réauthentifier passé un certain temps est souvent dû au fait qu'on a associé (dans le code PHP par exemple) authentification et session (mais ce n'est pas la seule possibilité).

    Maintenant, dans le cas d'une authentification basique réglée par .htaccess (je dis bien authentification), Apache n'utilise pas de session du tout mais des mécanismes définis dans la spécification HTTP. Et malheureusement, cette spécification ne prévoit aucune durée limitée pour cette authentification à plus forte raison que c'est le navigateur et lui seul qui décide d'envoyer le login et le mot de passe (avec chaque requête). Moralité : avec une authentification basique (par .htaccess), pas de moyen possible pour "fermer" une authentification, la spécification HTTP ne le prévoyant pas.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 11
    Points
    11
    Par défaut
    Bonjour à tous,
    merci _Mac_ pour ces éclaircissements.

    Si htaccess ne permet pas de gérer une durée de session et qu’il n’offre qu’une protection basique, quelles sont les solutions possibles ?
    Il existe de nombreux scripts PHP gratuits mais qui sont souvent accusés de comporter des failles de sécurité. De plus, comment être assuré que les auteurs de ces scripts ne se réservent pas quelque part, un accès à nos données ?

    Que me conseillerez-vous comme solution permettant, le plus simplement possible, d’autoriser un accès pour une durée limitée à des utilisateurs connus ?

    Cela pourrait être une solution basée sur php/mysql (mon hébergeur propose ces outils) mais qui puisse être mise en place par un non-programmeur, ce que je suis.

    Merci infiniment pour votre aide.
    PierreR75

  16. #16
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    L'alternative à l'authentification basique par .htaccess est effectivement de passer par des outils ou des scripts. Si l'hébergeur propose PHP, tu peux écrire un script en PHP. La difficulté dans ce genre de cas c'est de s'assurer de la protection totale des pages. Cela passe généralement par deux possibilités :
    • mettre un bout de code sur chaque page devant être protégée qui vérifie l'authentification avant de faire quoi que ce soit. C'est long à faire une fois que le site existe et cela ne s'applique qu'aux pages PHP.
    • Si tous les fichiers à protéger sont facilement identifiables, par exemple si ce sont tous les fichiers d'un certain répertoire, il est possible de forcer via un .htaccess le passage par un premier script PHP qui va vérifier et valider l'authentification avant d'exécuter la ressource demandée. C'est facile et rapide à mettre en place (un .htaccess et la page de login) et non intrusif et cela s'applique à tout type de fichier, pas que les .php, mais la contrainte est de pouvoir facilement lister les ressources à protéger via des règles implémentables dans un .htaccess.

    Dans les deux cas il faut effectivement développer une page de login et créer la base de données qui va avec. Je ne sais pas ce qui est possible pour toi de ce côté-là, si du code existant peut être utilisé (avec effectivement toujours une méfiance quant à la sécurité totale du script utilisé).

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 11
    Points
    11
    Par défaut
    J'ai un hébergement mutualisé sur OVH, il y a PHP, mySQL... tout ce qu'il faut je crois.
    Je sais que dans ce cas, je dois créer une base (sûrement ma principale difficulté) et ajouter un bout de code PHP sur mes pages que je dois rebaptiser en .PHP, mais mon site est très simple, c'est juste une vitrine statique avec une partie en libre accès et une partie réservée à des utilisateurs connus (ident/paswd) et une limite de la durée de session.

    Merci encore _Mac_

  18. #18
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    On peut partir de ce que tu as vu et aller sur la solution 2, ce qui évitera d'avoir à renommer tes pages en .php. Mais avant cela, peux-tu confirmer l'hypothèse de base de la solution 2, à savoir que tu sais dire quels pages sont protégées (par exemple, elles sont toutes isolées dans tel sous-répertoire) ?

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 11
    Points
    11
    Par défaut
    Pour info, mon site comprend juste 5 pages, seule l'une d'elle doit être en accès restreint. S'il faut ajouter un bout de PHP sur toutes , les renomer, et adapter les href, y'a pas de souci, j'en ai pour 15mn.

    Sinon, oui, je peux mettre la page protégée dans le répertoire que je veux, c'est moi qui décide (Ah ! ça fait du bien de maîtriser quelque chose de temps en temps

    Merci.

  20. #20
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    En hébergement mutualisé, tu ne peux pas modifier le fichier php.ini. Il faut voir si tu peux modifier cette durée avec un fichier .htaccess ou un bout de code PHP. Je n'y connais rien, il faut que tu cherches des infos sur le sujet.

    Pour revenir à la protection de la page, tu peux quand même appliquer la solution 2. Vois d'abord pour implémenter une page de login qui vérifie un login et un mot de passe (en base de données ou pas, d'ailleurs, tu peux mettre ce login et ce mot de passe dans le code PHP) et qui peut rediriger le visiteur sur une certaine page (la page à protéger) si le login est correct. Pour la suite, je te dirai quoi faire.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/12/2011, 21h33
  2. Créer une popup seule, avec une durée de vie dans le temps
    Par echantillon dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 16/02/2011, 21h39
  3. option de configurer une durée de session dans php
    Par Aquaa dans le forum Langage
    Réponses: 7
    Dernier message: 17/03/2010, 15h29
  4. Comment prévoir une durée de session avec htaccess ?
    Par PierreR75 dans le forum Sécurité
    Réponses: 2
    Dernier message: 23/12/2009, 10h14
  5. [MySQL] interdire les votes toutes les 5 minutes avec une variable de session
    Par mademoizel dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/03/2008, 11h40

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