accéder à des fichier php distants easyphp

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 : accéder à des fichier php distants easyphp

par Ryle » 07 mai 2008, 17:52

Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)



Quant à ta derniere question, le htaccess est effectivement inutile, puisque interprété par le serveur apache qui n'accèdera qu'au dossier web (et ne protégera donc que son contenu)

par rollus » 07 mai 2008, 17:28

J'ai découvert mon erreur.
Lorsque je fais le header dans le fichier qui est à l'extérieur du répertoire www d'easyphp, je faisais

Code : Tout sélectionner

header("Location: C:/Program Files/EasyPHP 2.0b1/www/test_sessions_bd/userConnect.php");
et comme le précisais caroube
2) même en développement avec easyph, comme tu accèdes en C:\ et pas en http://, le serveur Apache qui lance l'exécution du PHP n'est pas sollicité. Donc il ne se passera rien
Donc après quelques tatonnement... j'ai mis

Code : Tout sélectionner

header("Location: http://127.0.0.1/test_sessions_bd/userConnect.php");
Et voilà!

Allez, sans vouloir abuser, une petite dernière:
Si on met les fichiers php sensibles à l'extérieur du répertoire accessible par http, est-il utile de les protéger par un fichier htaccess?

Encore merci pour votre disponibilité.

par Invité » 07 mai 2008, 15:35

Bon, j'ai essayé d'inclure un fichier php mais ça ne prend pas.

Voici le fichier index.php qui est dans le répertoire www d'easyphp

Code : Tout sélectionner

<?php include 'C:/Program Files/EasyPHP 2.0b1/Modele/validation.php'; ?> <form method="post" action="<?php $_SERVER['PHP_SELF'];?>"> <fieldset> les différent inputs de connexion et pour envoyer <input type="image" name="connect" src="bt_connexion.gif" alt="Connexion"/> </fieldset> </form>
Le fichier qui est à l'extérieur du répertoire www d'easyphp

Code : Tout sélectionner

<?php /************************************ * Si action sur bouton connexion * *************************************/ if(!empty($_POST['connect'])|| !empty($_POST['connect_x'])){ $user_login=addslashes(trim($_POST['utilisateur'])); $user_password=addslashes(trim($_POST['motDePasse'])); verif dans une base de donnee et tout le tralala //Redirection vers la page souhaitee header("Location: C:/Program Files/EasyPHP 2.0b1/www//userConnect.php"); exit; }
J'aimerais savoir si c'est possible de faire appel à un fichier extérieur et en même temps passer des paramètres en post.
Si c'est infaisable, je laisse tomber et j'essayerais de protéger les fichiers avec un htacces.

Merci encore de vos réponses

par caroube » 07 mai 2008, 14:50

à moins d'avoir un serveur dédié ensuite pour déployer ton site, tu n'auras pas de répertoire à l'extérieur de "www" (ou de son équivalent) ...
Ce n'est pas exact. Les hébergements mutualisés chez OVH (par exemple) donnent accès aux répertoires

Code : Tout sélectionner

cg-bin private-vpn requetes sessions www
avec seul www accessible par http. Et il est tout à fait possible de créer des répertoires non accessibles via http sous cette racine. Je me sers fréquemment de cette possibilité pour créer des répertoires où sont stockées des archives ou alors où sont stockés les fichiers .htpassword.
Ben je déploie le site sur un hébergement mutualisé et d'après cette doc...
Déjà, tout simplement, au lieu d'appeler un fichier connect.inc, tu l'appelles connect.php ou connect.inc.php.
Même si quelqu'un essaye de télécharger le fichier, il passera par le moteur Web (Apache ou autre) qui va exécuter le PHP parce que le moteur est paramétré pour exécuter les fichiers avec des extensions .php, .phtml, .php4 ou je ne sais quoi (cela dépent de l'admin du site). Par exemple, si ton fichier connect.inc.php contient
$dbhost = "mabase";
$dbconnect = "root";
$dbpassword = "mot de passe";
et qu'on essaye de faire http://site.com/connect.inc.php il obtiendra une page blanche (il n'y a pas d'instruction d'affichage dans la page). Ce n'est bien sûr pas vrai si ton fichier s'appelle connect.inc et que l'on fait http://site.com/connect.inc (Apache considère le fichier comme un fichier texte et l'exécute).
Je pense que pour t'en convaincre, le mieux est que tu fasses des essais.

Enfin, si tu veux vraiment protéger tes fichiers sensibles, met un mot de passe compliqué sur la connexion ftp. Parce qu'il ne sert à rien de blinder l'accès http si l'accès ftp est béant.

par Arcanis » 07 mai 2008, 14:48

Si tu fais ça:

Code : Tout sélectionner

/phpinc /includes
Alors tous le contenu de /phpinc sera innacessible au public, certes, mais il sera par la même occasion impossible d'y accèder via des formulaires, qu'ils soient GET ou POST.
En fait, l'auteur parle ici de mettre simplement les fichiers inclus via les fonctions php include(), require(), include_once() et require_once() dans le dossier. Ainsi, si on veut les exécuter, on est obligé de passer par la page principale.
Note que tu peux aussi réaliser cette opération avec un htaccess, si ton hébergeur est configuré pour.

par rollus » 07 mai 2008, 14:40

En revanche, php peut retrouver un fichier en dehors du dossier "www" en passant non pas par l'url, mais par le système de fichier (avec un fopen(), un include(), ...) et pourra ainsi récupérer le contenu de ton fichier afin de l'exécuter.
Je vais essayer
Maintenant, concrètement, ça ne sert pas forcément à grand chose amha, et à moins d'avoir un serveur dédié ensuite pour déployer ton site, tu n'auras pas de répertoire à l'extérieur de "www" (ou de son équivalent) ...
Ben je déploie le site sur un hébergement mutualisé et d'après cette doc http://g-rossolini.developpez.com/tutor ... -1-9#LII-I
je pensais bien faire.

Merci pour votre disponibilité

par Ryle » 07 mai 2008, 10:00

Nope ce n'est pas possible (tout du moins, pas comme ça :)). Si ton fichier est en dehors du dossier www, il n'est "pas accessible" via son url (puisqu'il n'en a pas), et l'utilisateur (via le serveur) ne peut le joindre et donc lui demander d'exécuter un traitement...

En revanche, php peut retrouver un fichier en dehors du dossier "www" en passant non pas par l'url, mais par le système de fichier (avec un fopen(), un include(), ...) et pourra ainsi récupérer le contenu de ton fichier afin de l'exécuter.

Maintenant, concrètement, ça ne sert pas forcément à grand chose amha, et à moins d'avoir un serveur dédié ensuite pour déployer ton site, tu n'auras pas de répertoire à l'extérieur de "www" (ou de son équivalent) ...

par caroube » 07 mai 2008, 09:56

Il faut bien comprendre ce qui fonctionne sur le serveur et ce qui fonctionne sur le poste client. Quand tu utilises easyphp, on a tendance à tout confondre.
La syntaxe <form action="..."'> est du HTML qui fonctionne sur le poste client. Si tu mets C:\xxx, le HTML ira chercher sur le C:\ du poste sur lequel il fonctionne.
1) ça va faire bizarre à l'utilisateur qu'on essaye d'exécuter un fichier sur SON disque
2) même en développement avec easyph, comme tu accèdes en C:\ et pas en http://, le serveur Apache qui lance l'exécution du PHP n'est pas sollicité. Donc il ne se passera rien

Le paramètre action de <form> est obligatoirement http://Modele/validation.php

Donc si tu veux empêcher l'accès à certains fichiers PHP
1) soit tu t'orientes vers une solution de cryptage (Zend, IonCube, ...) qui va rendre les fichiers PHP illisibles
2) soit tu travailles avec des include car là, on est au niveau du serveur et du système de fichiers. Exemple :
/** fichier index.php dans www **/
<?php
include ("C:\autre_rep\connect.php");
/*** autres instructions ***/
?>
Même si quelqu'un arrive à récupérer le contenu de index.php via http, il ne pourra pas accéder au répertoire C:\ hors de cette arborescence

accéder à des fichier php distants easyphp

par rollus » 06 mai 2008, 23:56

Bonjour,

J'utilise easyphp en local et j'aimerais mettre des fichiers php à l'extérieur du répertoire www.
A l'intérieur du répertoire www j'ai un fichier index.php qui renvoi vers un fichier php qui est à l'extérieur du répertoire www.

Et voila mon problème, est-ce possible?

voici le code:

Code : Tout sélectionner

<form action="C:/Program Files/EasyPHP 2.0b1/Modele/validation.php" method="post"> <fieldset> les différents input... </fieldset> </form>
En fait, j'aimerais mettre mes fichier php sensibles en dehors du répertoire www pour qu'il ne soient pas accessibles.
Est-ce une bonne idéé.

Merci
Je pense faire de même avec