Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/03/2006, 19h03   #1
Membre du Club
 
Inscription : avril 2005
Messages : 300
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 300
Points : 59
Points : 59
Par défaut [Sécurité] Problème: safe_mode à On sous Windows.

Bonjour,

Suite à ce tutoriel PHP secure j'ai activé le safe_mode.
Seulement je souhaite pouvoir utiliser la fonction set_time_limit() dans un de mes scripts. Elle est donc désactivée par le safe_mode, mais il est normalement possible d'indiquer un répertoire dans lequel ces fonctions employé par les scripts seront tout de même utilisable.
J'ai donc placer dans safe_mode_exec_dir mon répertoire, soit sous Windows:
"D:/www/sites/domdom/"

Je relance Apache (EasyPHP pour prog.), je lance mon script qui se trouve dans ce dossier, mais le set_time_limit(0) n'est pas pris en compte car je suis stoppé net au bout de 30 secondes.

Que faut-il faire ?
Ais-je mal fais quelque chose ?

Par ailleur, (j'en profite en même temps) sous linux il faudra bien indiquer tel qu'il est dans l'exemple ? (/private_dir/).

Et s'il existe d'autres dossiers dans celui indiqué par safe_mode_exec_dir, les fichiers seront également pris en compte ?
(dans les sous dossiers)

Merci de votre aide.
Thierry8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2006, 19h17   #2
Membre émérite
 
Avatar de macbook
 
Inscription : février 2006
Messages : 840
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 840
Points : 924
Points : 924
Pourquoi ne pas modifier directement la directive max_execution_time dans ton php.ini ?
__________________
Consultant idéaliste.
macbook est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2006, 21h20   #3
Membre du Club
 
Inscription : avril 2005
Messages : 300
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 300
Points : 59
Points : 59
Parce que sur le serveur où je serais, je n'ai qu'un seul emplacement pour y mettre mon script (cas réel).

Et je n'ai pas la possibilité de modifier la directive max_execution_time.

Donc je souhaiterai pouvoir tester avant de le mettre sur le serveur.
Si je ne peut faire le test sous Windows en local, je me vois mal faire un "test" sur un serveur en production. N'y a t-il pas de solution sous Windows ?
Thierry8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2006, 22h39   #4
Membre du Club
 
Inscription : avril 2005
Messages : 300
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 300
Points : 59
Points : 59
..
J'ai fais tous un tas de tests.
..
Personne ne peux m'aider ?
Thierry8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2006, 23h02   #5
Membre émérite
 
Avatar de macbook
 
Inscription : février 2006
Messages : 840
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 840
Points : 924
Points : 924
Même avec ini_set() ?
__________________
Consultant idéaliste.
macbook est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 08h21   #6
Membre du Club
 
Inscription : avril 2005
Messages : 300
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 300
Points : 59
Points : 59
..
Je ne sais pas, je ne m'en suis jamais servit.

La syntaxe est-elle bonne:
ini_set('max_execution_time',0);

Mais si cela venait à fonctionner, ça ne résoudrait pas le problème tout de même.
Thierry8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 08h24   #7
Membre du Club
 
Inscription : avril 2005
Messages : 300
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 300
Points : 59
Points : 59
..
...
Si ma syntaxe précédente est bonne pour le ini_set cela ne fonctionne pas non plus.
Thierry8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 08h52   #8
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
c'est une mesure de sécurité, donc pas la peine de chercher à la contourner : on ne peut pas.

C'est simple : en "safe_mode" on ne peut pas modifier le "max_execution_time".


Mais dans le httpd.conf tu peux sûrement modifier la configuration, via une commande "php_flag" (cf doc PHP).
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 09h18   #9
Membre du Club
 
Inscription : avril 2005
Messages : 300
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 300
Points : 59
Points : 59
Citation:
Envoyé par Kioob
c'est une mesure de sécurité, donc pas la peine de chercher à la contourner : on ne peut pas.

C'est simple : en "safe_mode" on ne peut pas modifier le "max_execution_time".


Mais dans le httpd.conf tu peux sûrement modifier la configuration, via une commande "php_flag" (cf doc PHP).
Ben d'après le lien donné dans mon tout premier post, safe_mode_exec_dir permettrais de placer des scripts sans que le safe_mode activé en prenne compte.

Pour php_flag, ce n'est pas dans php.ini ?
En quoi ça consiste exactement ?
Thierry8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 11h29   #10
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
Non, safe_mode_exec_dir indique un dossier dans lequel des executables pourront être appelés depuis PHP. Rien à voir avec le max_execution_time, et en aucun cas cela désactive le safe_mode pour des scripts PHP.

Pour php_flag, comme dit plus haut, cf la doc.
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 11h45   #11
Membre du Club
 
Inscription : avril 2005
Messages : 300
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 300
Points : 59
Points : 59
Citation:
Envoyé par Kioob
Non, safe_mode_exec_dir indique un dossier dans lequel des executables pourront être appelés depuis PHP. Rien à voir avec le max_execution_time, et en aucun cas cela désactive le safe_mode pour des scripts PHP.
Ah !!!!!!! ok... j'ai compris.


Citation:
Envoyé par Kioob
Pour php_flag, comme dit plus haut, cf la doc.
Si j'ai bien compris je pale par exemple:
php_flag set_time_limit on
Mais dans ce cas sir je l'ajoute dans le httpd.conf, tous les dossiers (différents sites) pourront la modifier. Or je ne souhaite pas que ce soit le cas. Enfin uniquement pour un dossier que je définirais.
Thierry8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 12h28   #12
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
non, il faudrait plutot mettre :

Code :
1
2
3
<Directory /xxxxxxxxx>
    php_flag set_time_limit 300
</Directory>
"/xxxxxxxxx" étant le dossier qui contiendra les scripts pour lesquels tu autorises un "time_limit" plus long

et "300" étant le time_limit que tu souhaites pour ton script (il s'agit d'un nombre de secondes... 0 signifiant "illimité", mais je te le déconseille fortement).
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 13h10   #13
Membre du Club
 
Inscription : avril 2005
Messages : 300
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 300
Points : 59
Points : 59
Citation:
Envoyé par Kioob
non, il faudrait plutot mettre :

Code :
1
2
3
<Directory /xxxxxxxxx>
    php_flag set_time_limit 300
</Directory>
"/xxxxxxxxx" étant le dossier qui contiendra les scripts pour lesquels tu autorises un "time_limit" plus long

et "300" étant le time_limit que tu souhaites pour ton script (il s'agit d'un nombre de secondes... 0 signifiant "illimité", mais je te le déconseille fortement).
Je te remercie.
Mais pourquoi me déconseiller cela ?

S'il s'agit d'un script dont je ne peux connaître le temps, mais que je maîtrise, je pense qu'il n'y à pas de crainte à avoir ?

Je vais tester ce dont tu m'as indiqué.
Merci beaucoup.
Thierry8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 13h22   #14
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
Si jamais le script PHP "boucle" pour une X raison, alors le slot Apache correspondant sera lui aussi "bloqué"... ce qui peut donc avoir un effet très négatif sur les performances de celui ci.

Pour des scripts lancés via Apache, je pense qu'il faut toujours fixer une limite, même "longue" (1 heure par exemple).
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 13h32   #15
Membre du Club
 
Inscription : avril 2005
Messages : 300
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 300
Points : 59
Points : 59
Très bien je te remercie encore.

En revanche j'ai mis cela dans le httpd.conf:
Citation:
<Directory "D:/">
php_flag set_time_limit 0 // j'ai aussi essayé avec 300
</Directory>
Pour n'avoir aucune limitation sur tout le d: mais cela ne fonctionne pas, je suis toujours bloqué à 30 s.
Thierry8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 13h42   #16
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
L'idéal serait de faire un "phpinfo();" afin de voir réellement si la modif a été prise en compte ou non.

A priori ce n'est pas pris en compte, peut-être là encore bloqué par le SAFE_MODE. Je verrais bien une solution : mettre le SAFE_MODE à OFF dans le php.ini, puis mettre php_admin_flag safe_mode on après ton </Directory>.
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 14h00   #17
Membre du Club
 
Inscription : avril 2005
Messages : 300
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 300
Points : 59
Points : 59
Citation:
Envoyé par Kioob
L'idéal serait de faire un "phpinfo();" afin de voir réellement si la modif a été prise en compte ou non.
Mais là, ça ne peut fonctionner. Le phpinfo m'affichera (ce qui est le cas) 3à en max_time_execution, normal, du fait que le phpinfo n'est pas dans le d:.
Ah...je vais faire le test en mettant directory en c:
pareil...

Apparament ce n'est pas bloqué par le safe_mode:
http://fr2.php.net/manual/fr/features.safe-mode.functions.php
Thierry8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 14h04   #18
Membre du Club
 
Inscription : avril 2005
Messages : 300
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 300
Points : 59
Points : 59
Citation:
Envoyé par Kioob
L'idéal serait de faire un "phpinfo();" afin de voir réellement si la modif a été prise en compte ou non.
Mais là, ça ne peut fonctionner. Le phpinfo m'affichera (ce qui est le cas) 3à en max_time_execution, normal, du fait que le phpinfo n'est pas dans le d:.
Ah...je vais faire le test en mettant directory en c:
pareil...

Apparament ce n'est pas bloqué par le safe_mode:
http://fr2.php.net/manual/fr/features.safe-mode.functions.php


EDIT:
J'ai également essayé avec max_time_execution
<Directory /xxxxxxxxx>
php_flag max_time_execution 300
</Directory>
Thierry8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 14h17   #19
Membre du Club
 
Inscription : avril 2005
Messages : 300
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 300
Points : 59
Points : 59
Tu m'as donné la solution, avec quelques modifications minim:


Code :
1
2
3
<Directory "D:\">
	php_admin_flag safe_mode off
</Directory>
Cela fonctionne...qu'en pense tu ?

Mais a vrai dire je n'ai que fais le test (qui fonctionne) mais je ne sais pas ce que représente le php_admin_flag. Vais voir ça dans la doc. Dis moi ce que tu en pense.

Merci
Thierry8 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 14h31   #20
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
bah là du coup tu as potentiellement une jolie faille de sécurité... Après c'est toi qui voit.
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h21.


 
 
 
 
Partenaires

Hébergement Web