[RESOLU] Variables de session

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Variables de session

Re: [RESOLU] Variables de session

par Bosse.cie » 02 nov. 2014, 21:28

Car dans le cas d'un hébergement mutualisé, ce qui sera le cas pour cette application, j'ai lu en de nombreux endroits (dont la doc officiel de php si je me souviens bien), que laisser le dossier habituel de session, qui est un /temp accessible à tout le monde était une faille de sécurité.

Je ne sais quel est le niveau de risque, mais bon; autant le changer.

Je crois même qu'ovh le précise (ce sera sur ovh).

Re: [RESOLU] Variables de session

par moogli » 02 nov. 2014, 17:23

salut,

Pourquoi modifier ce paramètre ?
Généralement le paramètre par défaut suffit.

si vraiment tu as veux le faire alors il est préférable d'utiliser un php.ini local (par défaut .user.ini avec php >= 5.3) ou utiliser un .htaccess
doc de l'option de configuration http://fr2.php.net/manual/fr/session.co ... .save-path


@+

Re: Variables de session

par Bosse.cie » 02 nov. 2014, 16:18

Bon ça fonctionne, mais avec étonnement.

Il faut à chaque fois répéter la fonction session_save_path() avant chaque session_start().
Apparemment...

Je vais donc changer le titre pour "problème de session_save_path(()", si ça peut servir à d'autres...


EDIT : Zut, je ne peux pas changer le titre...

Variables de session

par Bosse.cie » 02 nov. 2014, 15:42

Bonjour,

Bon, là je craque. Je suis certain qu'il s'agit d'une idiotie qui se cache quelque part, mais ça fait un bout de temps que je la cherche, et pas moyen de la trouver.
Je vous appelle donc à l'aide.

J'ai un formulaire qui me demande des données (jusque-là...). Une fois ces données saisies, j'appelle par submit un fichier php qui vérifie celles-ci, puis inclus un fichier session.php avec une fonction ouverture ()

Cette fonction prend en argument TRUE ou FALSE.
TRUE signifie qu'il s'agit d'une nouvelle session (c'est le cas ici). J'initialise des variables de session :
function ouverture($premier =TRUE) { //return TRUE si ok, FALSE autrement
	if ($premier) { //nouvelle session
		//Sécurisation des sessions
session_save_path(realpath(dirname($_SERVER['DOCUMENT_ROOT'])."divers/session"));
		//...J'ai coupé car long et sans interet dans mon problème
		if (!session_start()) return FALSE; //si l'ouverture de session échoue
		session_regenerate_id(TRUE);
		if (isset($_SERVER["REMOTE_ADDR"])) $_SESSION["ip1"] =$_SERVER["REMOTE_ADDR"]; //mémorisation adresse ip (ou proxy)
		else $_SESSION["ip1"] ="inconnu";
		//Mémorisation Adresse ip derrière proxy
		if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) $_SESSION["ip2"] =$_SERVER["HTTP_X_FORWARDED_FOR"];
		else $_SESSION["ip2"] ="inconnu";
		//Mémorisation du navigateur
		if (isset($_SERVER["HTTP_USER_AGENT"])) $_SESSION["navigateur"] =$_SERVER["HTTP_USER_AGENT"];
		else $_SESSION["navigateur"] ="inconnu";
		$_SESSION["idauto"] =session_id(); //pas vraiment sûr de l'utilité...
		$_SESSION["cookie"] =mt_rand(0,1000); //Création valeur aléatoire
		$_SESSION["appel"] =""; //variable permettant de vérifier quel fichier à appeler le fichier recourant à la session
		setcookie("facture", $_SESSION["cookie"],0); //Création d'un cookie contenant cette valeur aléatoire
		return TRUE;
	} ELSE { //Ce n'est pas une ouverture de session, on vérifie que les valeurs de session sont bonnes
		if (!session_start()) return FALSE; //si l'ouverture de session échoue
echo ($_SESSION["ip1"]." ip1<br>");
echo ($_SESSION["ip2"]." ip2<br>");
echo ($_SESSION["navigateur"]." navigateur<br>");
echo ($_SESSION["idauto"]." idauto<br>");
echo ($_SESSION["cookie"]." cookie<br>");
echo ($_SESSION["appel"]." appel<br>");
exit(0);
J'ai coupé ce qui n'est pas intéressant.

Au retour de cette fonction, si je teste la valeurs de mes variable $_SESSION, elles sont bonnes.
J'inclue ensuite un fichier php qui est un formulaire et demande d'autres données.
Au submit de celui-ci, j'ouvre un autre fichier php qui :

-inclus de nouveau session.php.
Appelle la fonction ouverture() avec cette fois FALSE en argument signifiant qu'il ne s'agit pas d'une première ouverture. Ceci pour maintenant tester que mes variables de Session existent et sont correctes pour accepter ou refuser ce travail.
Dans ma fonction ouverture et dans ce cas (ELSE en majuscules), j'ai fait un affichage de toutes mes variables de session : Il n'y a plus rien.

Et là, ça me dépasse.

Deux jours que je tourne autour; je n'arrive plus à voir quoi que ce soit.

Et vous ?

Merci d'avance

Michel


EDIT : Je rajoute que si je vais voir mes cookies, je trouve bien le cookie facture et le cookie PHPSESSID.

Par contre, si je vais dans le dossier divers/session du session_save_path() je ne trouve rien.