PHPFrance

Discuter de tout ce qui touche au PHP, en français.

Vers le contenu

» Masquer les résultats de la recherche

Recherche dynamique PHPfrance

  1. Effectuez une recherche, les résultats s'afficheront dynamiquement ici.

séquelles de sécurisation de serveur

Comment gérer un serveur (Unix, Windows,...)

Messagede naholyr le 11 Juil 2005, 14:46

Que je sois bien sûr de comprendre.
Dans une page A, on définit une variable de session avec $_SESSION["nom_secteur"]= $_POST["nom_secteur"], puis on fait une redirection vers la page B avec header("Location: B").
Dans la page B, on utilise la variable $_SESSION["nom_secteur"], qui est vide ?

Si c'est bien ça, il faut déjà vérifier que session_start() est bien au début des pages A et B.
Sinon il faut vérifier le contenu des différentes variables en cause le long du processus.
Avatar de l’utilisateur
naholyr
Administrateur PHPfrance
Administrateur PHPfrance
 
Messages: 2808
Inscription: 07 Fév 2005, 15:31
Localisation: Villefranche Sur Saone

Publicité

réponse à Naholyr

Messagede Le retraité le 11 Juil 2005, 14:54

C'est bien ça...!
et session_start() est bien lancé (et reconnu puisque j'arrive à faire afficher le N° de la session dans la page B (que je te disais avoir comparé à celui de la session ouverte dans la page A...)
Merci pour ta matière grise...!
Alain
Le retraité
Embryon
 
Messages: 11
Inscription: 04 Juil 2005, 21:38

Messagede naholyr le 11 Juil 2005, 15:06

Tu as effectivement très bien fait de vérifier les numéros de session, ça fait une base sûre à partir de laquelle travailler ;)

D'abord vérifier le contenu de $_POST. Dans A, avant l'appel à header(), un simple
Syntaxe: [ Télécharger ] [ Masquer ]
Code php
var_dump($_POST);

exit(1);
Stoppera le script avant la redirection, et permettra de voir le contenu précis des variables de formulaires.
Avatar de l’utilisateur
naholyr
Administrateur PHPfrance
Administrateur PHPfrance
 
Messages: 2808
Inscription: 07 Fév 2005, 15:31
Localisation: Villefranche Sur Saone

c'est fait...

Messagede Le retraité le 11 Juil 2005, 15:16

j'ai copié ton code à l'endroit voulu et j'obtiens:
array(5) { ["nom_prof"]=>  string(11) "resp_groupe" ["m_pass"]=>  string(6) "groupe" ["nom_secteur"]=>  string(13) "D_Vernon Pacy" ["affiche"]=>  string(0) "" ["Submit"]=>  string(7) "Valider" }

Celle qui m'interesse le plus, ["nom_secteur"], contient bien la valeur voulue... à cet endroit (juste avant le "header...)
Alain
Le retraité
Embryon
 
Messages: 11
Inscription: 04 Juil 2005, 21:38

Messagede naholyr le 11 Juil 2005, 15:39

Ben... Pareil avec $_SESSION au lieu de $_POST ? :D
Avatar de l’utilisateur
naholyr
Administrateur PHPfrance
Administrateur PHPfrance
 
Messages: 2808
Inscription: 07 Fév 2005, 15:31
Localisation: Villefranche Sur Saone

pareil...

Messagede Le retraité le 11 Juil 2005, 15:49

voilà, c'est fait...
le retour est:
array(2) { ["nom_secteur"]=>  string(13) "D_Vernon Pacy" ["nom_prof"]=>  string(11) "resp_groupe" }

ça contient bien les 2 variables que je veux conserver...
Alain
Le retraité
Embryon
 
Messages: 11
Inscription: 04 Juil 2005, 21:38

Messagede naholyr le 11 Juil 2005, 15:59

Gni :s
Ce qui exclut donc un problème dans A.
Comme l'id de session transite bien, ce n'est pas un problème de SID.
J'ai peut-être une idée, mais je veux d'abord vérifier la page B.

Tu vas faire la même opération de débuggage sur $_SESSION dans la page B, une fois juste après session_start(), et l'autre fois juste avant la première utilisation de $_SESSION["nom_secteur"]

Les idées que j'ai - en vrac - sont les suivantes :
- un test d'égalité foireux (un == qui devient = par exemple).
- une variable globale qui parasite (mais c'est impossible si register_globals est à Off).
- et sûrement d'autres pistes une fois que j'aurai les résultats de débug ^^
Avatar de l’utilisateur
naholyr
Administrateur PHPfrance
Administrateur PHPfrance
 
Messages: 2808
Inscription: 07 Fév 2005, 15:31
Localisation: Villefranche Sur Saone

Aïe...

Messagede Le retraité le 11 Juil 2005, 16:39

j'obtiens:
array(0) { }

comme retour mais comme vérification, au même endroit:
echo "n° de session :  ".session_id()."<br>";
echo "secteur :  ".$_SESSION['nom_secteur'];

Donne évidemment la variable vide, mais le N° de session est bien valide par rapport à celui testé en page A....
Alain
Le retraité
Embryon
 
Messages: 11
Inscription: 04 Juil 2005, 21:38

Bon, c'est bien difficile...

Messagede Le retraité le 11 Juil 2005, 17:09

En relisant vos messages, j'ai eu l'idée de tester 2 pages "hyper simples":
page A:
<? session_start();
$_SESSION["nom_secteur"]= "toto";
header("location:page_B.php");
?>

page B:
<? session_start();
echo "secteur=  ".$_SESSION['nom_secteur'];
?>

résultat:
sur mon ordinateur, la page B affiche bien nom_secteur=toto
sur le serveur de mon prestataire de service également
sur le serveur "sécurisé" en..
- activant le mode "safe_mode"
- activant la variable magic_quotes_gpc
- mettant la variable register_globals à OFF
la variable est vide....

Mais que se passe-t-il donc sur cette machine "sécurisée"????
Alain
Le retraité
Embryon
 
Messages: 11
Inscription: 04 Juil 2005, 21:38

Messagede naholyr le 12 Juil 2005, 08:11

J'avoue que je cale... J'ai regardé hier quelle pouvait être l'incidence de safe_mode sur les sessions, mais rien...

Pourrais-tu faire un
Syntaxe: [ Télécharger ] [ Masquer ]
Code php
et éventuellement un
Syntaxe: [ Télécharger ] [ Masquer ]
Code php
print_r($GLOBALS);
pour sortir vraiment toutes les infos possibles ?
Avatar de l’utilisateur
naholyr
Administrateur PHPfrance
Administrateur PHPfrance
 
Messages: 2808
Inscription: 07 Fév 2005, 15:31
Localisation: Villefranche Sur Saone

PhP info...

Messagede Le retraité le 12 Juil 2005, 09:06

J'avais déjà essayé de le faire, mais je ne suis pas assez calé pour l'analyser...
Je te mets ci-dessous ce qui concerne les sessions:

Directive   Local Value   Master Value
session.auto_start   Off   Off
session.bug_compat_42   Off   Off
session.bug_compat_warn   On   On
session.cache_expire   180   180
session.cache_limiter   nocache   nocache
session.cookie_domain   no value   no value
session.cookie_lifetime   0   0
session.cookie_path   /   /
session.cookie_secure   Off   Off
session.entropy_file   no value   no value
session.entropy_length   0   0
session.gc_divisor   1000   1000
session.gc_maxlifetime   1440   1440
session.gc_probability   1   1
session.name   PHPSESSID   PHPSESSID
session.referer_check   no value   no value
session.save_handler   files   files
session.save_path   /var/lib/php/session   /var/lib/php/session
session.serialize_handler   php   php
session.use_cookies   On   On
session.use_only_cookies   Off   Off
session.use_trans_sid   Off   Off


Je tente de t'envoyer en fichier attaché de message perso la totalité avec le résultat de print_r($GLOBALS);

J'ai lancé la même demande d'info sur mon prestataire de service:
tout parait identique sauf la fin du tableau après
session.gc_probability   1   1

qui est:
session.hash_bits_per_character   4   4
session.hash_function   0   0
session.name   PHPSESSID   PHPSESSID
session.referer_check   no value   no value
session.save_handler   files   files
session.save_path   /sessions   /sessions
session.serialize_handler   php   php
session.use_cookies   On   On
session.use_only_cookies   Off   Off
session.use_trans_sid   0   0


voilà toutes les données du pb....

Le webmaster se serait peut-être planté dans le path des sauvegarde de session ? C'est-y possible ?
Alain
Le retraité
Embryon
 
Messages: 11
Inscription: 04 Juil 2005, 21:38

Messagede naholyr le 12 Juil 2005, 09:10

Tu peux m'envoyer le php.ini à naholyr@phpfrance.com ?
Ce sont surtout les directives safe_* qui m'intéressent.
Pour le session_path, je ne pense pas qu'il y ait d'erreur sinon session_start() échouerait.
Avatar de l’utilisateur
naholyr
Administrateur PHPfrance
Administrateur PHPfrance
 
Messages: 2808
Inscription: 07 Fév 2005, 15:31
Localisation: Villefranche Sur Saone

Précédente

Retourner vers Gestion de serveur(s)

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 5 invités

  • Publicité