[PHP]Protéger un script d'une utilisation directe - Uniquement par include !

:hello: Bonjour,
Je cherche à protéger mes scripts php d’une utilisation directe. En effet, je controle si l’utilsateur est loggé et ensuite j’inclu les-dits script, mais on peut toujours lancer ces script directements si on connait leur emplacement…
Je cherche une méthode pas trop lourde.
Merci :wink:

Pas forcément en php (je pense avec des .htaccess :wink: )

tu définis une constante sur la page “normale” qui inclut les autres
et tu fais un petit if(!defined(‘CONSTANTE’)){ exit(“Message”);} sur les autres

Merci :wink:

Remarque : les fichier de conf sont chargés par le fichier qui va charger les pages protégées donc à la limite ya un gros bug :slight_smile:
Mais je met quand même la prtotection, ca fait plus gars qui a pensé à tout :slight_smile:

? où est le problème avec le fichier conf ?

dsl j’ai pas tout compris :heink:

Si le script est chargé directement il a pas accés aux variables du fichier config.php puisque celui-ci est chargé par index.php
C’est tout !

EDIT : et donc il ne peut rien faire :paf:

Plus simple : tu fous le dossier dans un répertoire qui n’est pas servi par Apache (ou tu fous le chmod adéquat), de telle façon à ce que seul php peut le lire.

Un piti chmod 0600 ?

par exemple, sinon avec un .htaccess, si tout tes fichiers à "cacher" se trouvent dans un dossier (par exemple, au hasard, "include/" :D), tu crées le fichier .htaccess suivant dans le dossier à protéger :

Cela interdiras l’accès à toute personne essayant d’avoir le fichier via le serveur web :neutre: …
(le serveur le lit de la façon suivante :
1/ par défaut, j’interdis l’accès
2/ j’autorise les accès aux systèmes marqués après Allow
3/ il n’y a pas de ligne commençant par Allow, donc j’interdis l’accès à tout le monde)

Evidemment, cela n’empêche pas une personne connecté en ligne de commande sur le serveur d’avoir accès à ton fichier, dans ce cas seul une protection comme celle de l’homme Sans-Nom sera efficace :o

J’ai toujours raison de toute façon :slight_smile:

Quel est la différence avec un “deny from all” ?
Logiquement, on va dire que le serveur est securisé, donc pas d’infiltration :slight_smile:

la dernière option de la clause "Order" du fichier .htaccess est toujours la clause par défaut
Donc ces deux fichiers sont identiques :


Order Allow,Deny


Order Deny,Allow
Deny from all

un fichier avec cette syntaxe n’as pas contre aucun sens (je ne dis pas qu’il ne fonctionne pas, mais y’a de grande chance que ça te ponde un erreur 500) :


Order Allow,Deny
Deny from all

l’utilisation serait plutôt :


Order Allow,Deny
Allow from localhost

pour autoriser l’accès à ce dossier via le serveur web uniquement pour l’ordinateur hébergeant le serveur (ce qui peut paraître débile, mais ce n’est qu’un exemple :D)

Oui mais en mettant que “Deny from all” sa me fait aussi l’effet désiré !