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

Langage PHP Discussion :

[Sécurité] Problème: safe_mode à On sous Windows.


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    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.

  2. #2
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Pourquoi ne pas modifier directement la directive max_execution_time dans ton php.ini ?
    Consultant idéaliste.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    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 ?

  4. #4
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    ..
    J'ai fais tous un tas de tests.
    ..
    Personne ne peux m'aider ?

  5. #5
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Même avec ini_set() ?
    Consultant idéaliste.

  6. #6
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    ..
    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.

  7. #7
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    ..
    ...
    Si ma syntaxe précédente est bonne pour le ini_set cela ne fonctionne pas non plus.

  8. #8
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    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).
    Google is watching you !

  9. #9
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    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 ?

  10. #10
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    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.
    Google is watching you !

  11. #11
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    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.

  12. #12
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    non, il faudrait plutot mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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).
    Google is watching you !

  13. #13
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par Kioob
    non, il faudrait plutot mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  14. #14
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    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).
    Google is watching you !

  15. #15
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    Très bien je te remercie encore.

    En revanche j'ai mis cela dans le httpd.conf:
    <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.

  16. #16
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    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>.
    Google is watching you !

  17. #17
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    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

  18. #18
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    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>

  19. #19
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    Tu m'as donné la solution, avec quelques modifications minim:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  20. #20
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    bah là du coup tu as potentiellement une jolie faille de sécurité... Après c'est toi qui voit.
    Google is watching you !

Discussions similaires

  1. [SNMP] Problème de requêtes sous Windows
    Par weib dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 30/11/2005, 19h00
  2. Problème pare-feu sous Windows
    Par colomban dans le forum Sécurité
    Réponses: 3
    Dernier message: 30/09/2005, 09h50
  3. [TP7] Problème de OutTextXY sous Windows XP
    Par Trash_men dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 03/09/2005, 18h29
  4. [PostGres] Problème installation PostGres sous Windows
    Par Torpille dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 27/08/2004, 16h05
  5. [Débutant] Problème d'installation sous Windows 2000
    Par bavmorda dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 04/08/2004, 16h28

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