Rechercher : dans
Par :

PHP + HTACCESS -> GET, POST ?

Dernière réponse le 14 aoû 2009 à 22:33:55 guismojames, le 2 jun 2009 à 14:54:25 
 Signaler ce message aux modérateurs

Bonjour,

Je souhaiterai savoir si il est possible de protèger un dossier par htaccess mais tout en utilisant un formulaire (html+php) comme interface d'authentification.

Ce la nous donnerai le shéma suivant :

Page d'authentification -> Protection htaccess transparente -> Page privé souhaitée.

Les mot de passe en clair ne fond pas partis de la problématique, ce n'est donc pas la question de ce post.
Il n'est nulement question de l'opignion concernant la sécurité des connexion par session ou par htaccess.
Ce choix technologique doit absolument être maintenu, nous souhaitons simplement rendre plus digeste l'authentification qui actuellement est double (formulaire + login htaccess).

On est parvenu à garder la seule authentification htaccess qui se décline ensuite en session mais ce n'est pas le formulaire de connexion que l'on veut retirer, mais la fenêtre htaccess ! On garde cette possibilité mais je souhaiterai ne pas avoir à l'envisager ^^

D'avance merci à tous.

Configuration: ACER Aspire 9920G - Rééquipé :
- 4Go DDRII 667 OCZ Dual Channel
- 2x Velociraptor 320Go RAID (par carte interne additionnelle Adaptek)

Meilleures réponses pour « PHP + HTACCESS > GET, POST ? » dans :
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
Servlets - Gestion des formulaires VoirIntroduction aux formulaires Les servlets rendent très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML, c'est-à-dire une interface graphique permettant à l'utilisateur de saisir des données. Grâce à la balise...
CGI - Réception et traitement des données VoirEnvoyer des données à un script CGI L'envoi de données à un script CGI se fait par l'intermédiaire d'un formulaire HTML. Les formulaires HTML se créent à l'aide de la balise contenant des boutons, des champs, des listes et/ou des cases à...

1

P@t@ch0n, le 2 jun 2009 à 15:12:35

Regarde du côté de auth_digest, si tu as la chance que ce mod soit activé sur ton server.

http://www.php.net/features.http-auth

Répondre à P@t@ch0n

2

guismojames, le 3 jun 2009 à 00:39:21

Bonjour,

Bien que cela ne réponde pas à ma problématique, elle m'a apporté une connaissance technologique supplémentaire que je ne connaissais pas. Je pensais en effet que la fenêtre d'authentification était propre à la technologie htaccess, j'ignorai qu'elle pouvait être appeler depuis php. (du coup sa m'a aider sur un autre problème ^^)

Toutefois, pour préciser ma problématique, j'expose ma situation :

/root
+ /administrator
- .htaccess
- .htpasswd
- index.php
- index.php

Je souhaite passer l'authentification basic de htaccess, sans afficher la fenêtre login/password ! (passer de index de la racine a celui du dossier administrator).

Je souhaiterai donc connaître si cela est réalisable par formulaire html (GET, POST ...) ou via une fonction php quelconque (peut être header(), mais je n'ai pas trouvé).

Si cela n'est pas réalisable, je garderai la fenêtre d'authentification de htaccess, mais je souhaiterai que les utilisateurs connecté sur le site, et ayant les droits d'accès (via session php + mysql) n'est pas a s'authentifier à nouveau pour accéder au dossier administrator !

Ma contrainte est que l'authentification htaccess du dossier administrator ne peut pas être supprimé !

htaccess ne peut-il pas récupérer des variables passés en GET qu'il comparerai dans le but d'une authentification ?
PHP ne peut il pas envoyer le login+password d'une méthode qui permette de franchir de façon transparente cette sécurité ?

Répondre à guismojames

3

guismojames, le 3 jun 2009 à 01:05:52

Ok,

header('WWW-Authenticate: Basic realm="private"');

En alignant mon "realm" à mon AuthName (dans le fichier htaccess) j'arrive a faire que l'utilisateur se connecte par l'intermédiaire de la fenêtre de conexion que je veux supprimer, et peux a n'importe quel moment franchir le dossier administrator puis se que l'entête http est la bonne !

Je ne gagne rien comparé à le simple fait de m'authentifier par htaccess.

Est il possible de rajouter un login + password directement dans le header ?

header('WWW-Authenticate: Basic realm="private" login="user" pass="password") ?????

Répondre à guismojames

4

P@t@ch0n, le 3 jun 2009 à 08:57:55

Je ne comprend pas pourquoi tu veux garder ton .htaccess si tu utilises une session.

Répondre à P@t@ch0n

5

Alain_42, le 3 jun 2009 à 09:14:16

Tu peux protéger un dossier par un .htaccess sans authentification par exemple pour empêcher l'accès à des fichiers de configuration

il suffit de mettre seulement

DenyForAll dans le .htaccess
(vérifies le libellé exact je te mets ça de mémoire)

personne ne pourra ecéder à ce dossier sauf les scripts php pour des include et toi en ftp bien sur

Répondre à Alain_42

6

guismojames, le 4 jun 2009 à 02:05:47

La maîtrise de htaccess n'est pas du tout la problématique !

Moi j'ai une contrainte client, qui est le htaccess (mis à jour et gèré par un CRM tiers), pareil pour la gestion des comptes autorisés...

Se que je souhaite faire, c'est franchir ce htaccess par l'intermédiaire d'un formulaire d'authentification et non par la fenêtre classique de cette technologie !

Je garde la technologie des session, qui est une contrainte de développement, car il nous est plus facile de personnaliser le site au convenance des utilisateur par l'intermédiaire des variable et de mysql.

Seulement, quand le client veux atteindre certain dossier, il doit se ré-authentifier par l'intermédiaire de la boite de dialogue du navigateur pour htaccess, alors qu'il était authentifier sur le site par php.

Ma problématique est d'additionner les deux en toute transparence tout en gardant mon formulaire comme seul et unique moyen de connexion, et non la boite de dialogue du navigateur.

Personnellement, j'ai essayé de pomper les codes du CRM, mais toutes les sources sont cryptés et nécéssitent des clés de licence pour être lisible, se qui nous a déjà coûté une lourde extension sur apache pour rendre le CRM compatible, mais nadat pour reproduire quoi que se soit !!!! HORS LE CRM PARVIENT A FAIRE SE QUE JE SOUHAITE !!! (CRM développer pour mon client et non mutualisé)

Répondre à guismojames

7

gabriel gray, le 19 jui 2009 à 02:15:30

Si j'ai bien compris c'est ça que tu cherches :

<?php
function authenticate() {
    header('WWW-Authenticate: Basic realm="Test Authentication System"');
    header('HTTP/1.0 401 Unauthorized');
    echo "Vous devez entrer un identifiant et un mot de passe valide pour accéder
    à cette ressource.\n";
    exit;
}

if ( !isset($_SERVER['PHP_AUTH_USER']) || 
     ($_POST['SeenBefore'] == 1 && $_POST['OldAuth'] == $_SERVER['PHP_AUTH_USER'])) {
    authenticate();
} else {
    echo "<p>Bienvenue : {$_SERVER['PHP_AUTH_USER']}<br />";
    echo "Ancien : {$_REQUEST['OldAuth']}";
    echo "<form action=\"{$_SERVER['PHP_SELF']}\" method=\"post\">\n";
    echo "<input type=\"hidden\" name=\"SeenBefore\" value=\"1\">\n";
    echo "<input type=\"hidden\" name=\"OldAuth\" value=\"{$_SERVER['PHP_AUTH_USER']}\">\n";
    echo "<input type=\"submit\" value=\"Identification\">\n";
    echo "</form></p>\n";
}
?>

Répondre à gabriel gray

8

guismojames, le 19 jui 2009 à 16:15:59

Par ce que mieux vos tard que jamais, merci infiniment !

Répondre à guismojames

9

Cute-issime, le 6 aoû 2009 à 11:26:12

Bonjour,

J'ai le même probleme que toi Guismojames, mes utilisateurs se connecte déjà via un formulaire, ext ( j'utilise des sessions aussi) je voudrais leur épargner une 2em identification au moment du htaccess.

Tu as l'aire d'avoir trouver grâce à la réponse de gabriel gray, j'ai donc tenté de m'en inspirer pour mon probleme, mais j'arrive pas a voir en quoi ça aide >< je doit chercher dans la mauvaise direction.

J'ai fait qqch dans l'esprit

<?php
    $_SERVER['PHP_AUTH_USER']='monId';
    $_SERVER['PHP_AUTH_PW']='monMdp';
?>
<a href='./mon/dossier/proteger/' > Ici </a>


J'espérais que les 2 variables Serveur permettraient la confection via htacess


ps : vue mon poste, inutile de vous dire que je début dans l'utilisation de htaccess $:

Merci =} ;

Répondre à Cute-issime

10

 guismojames, le 14 aoû 2009 à 22:33:55

Malheureusement, après divers recherche, et surtout, prise de renseignement auprès d'une communauté de professionnels, la manoeuvre tenté est impossible.

Je pensais que renseigner l'entête http (car c'est par ce biais que voyage le login htaccess) cela permettrai d'y intégrer l'authentification et ainsi, me permettrai de franchir htaccess ... Mais non !

PHP ne peut créer une entête complète, la fenêtre d'authentification reste présente, j'ai donc utiliser l'authentification basic derrière SSL et transférer tout cela a une session php.

Une seconde solution consiste dans le passage des variables de sessions par get dans l'url, celle-ci étant ensuite traité directement dans le fichier htaccess. Mais dans ce dernier cas, il faut un serveur apache sur linux compatible full htaccess et modifier efficacement et dynamiquement le(s) fichier(s) de mot de passe. (impossible sous apache/win32, qui est mon environnement d'exécution).

@++

Répondre à guismojames