PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 25-04-2010 05:54:52

dan4
Membre
Inscription : 10-01-2010
Messages : 128

Accès au fichier de traitement sans passer par le fichier formulaire

Bonjour à vous tous et toutes!

Peut-ton bloquer l'accès au fichier de traitement si la personne n'a pas passé par le fichier qui contient le formulaire ?

formulaire.php
traitement.php


Salutations smile

Hors ligne

#2 25-04-2010 06:39:10

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Accès au fichier de traitement sans passer par le fichier formulaire

oui wink
a+

Hors ligne

#3 25-04-2010 07:03:29

dan4
Membre
Inscription : 10-01-2010
Messages : 128

Re : Accès au fichier de traitement sans passer par le fichier formulaire

Pierrot a écrit :

oui wink
a+

Je précise :

Admettons que ce ne soit pas un formulaire FORM avec SUBMIT mais plutôt un lien Hyper-Text comme ceci dans le fichier formulaire.php :

formulaire.php :
<a name="proceder" href="traitement.php">rediriger vers</a>

traitement.php :
if (!isset($_POST['proceder'])) { die('Acces directe interdit!'); } else { echo '...'; }

Peut-être faire une function avec une variable globale?

Sans utiliser de session ni de cookie ni de balise input.


Salutations smile

Hors ligne

#4 25-04-2010 08:10:04

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Accès au fichier de traitement sans passer par le fichier formulaire

Tu trouveras ton bonheur avec la super-globale $_SERVER qui possède dans l'un de ses champs la page d'où arrive l'utilisateur si je me souviens bien.

Hors ligne

#5 25-04-2010 09:34:10

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Accès au fichier de traitement sans passer par le fichier formulaire

$_SERVER['HTTP_REFERER'] est ton amie wink
a++

Hors ligne

#6 26-04-2010 18:46:12

dan4
Membre
Inscription : 10-01-2010
Messages : 128

Re : Accès au fichier de traitement sans passer par le fichier formulaire

Merci. 

La façon que j'ai trouvé et qui fonctionne :
dans formulaire.php :
<td><a href="traitement.php?id='.$affiche_commentaire["id"].'&validonclick=J4k3kk4h3s3k4j">Modifier</a></td>

Et dans traitement.php :
if($_GET['validonclick'] != "J4k3kk4h3s3k4j") { die('access interdit!'); } else { }

C'est pour éviter les messages d'erreurs et de changer ou supprimer une donnée par accident si la personne va directement dans traitement.php.

Mais je dois utiliser $_GET, j'aurais aimé plutôt utiliser $_POST de façon à ne pas passer la variable par le url.

Vu que je ne passe pas par un FORM et un bouton, mais plutôt un lien; comment je peux envoyer une variable via un lien?

J'ai essayé avec <a name="validonclick" href="....">....</a> ceci ne fonctionne pas. Surement que quelqu'un a une idée.


Salutations smile

Hors ligne

#7 26-04-2010 19:10:55

ManicoW
Cowrespondant
Lieu : Tours
Inscription : 08-05-2009
Messages : 192
Site Web

Re : Accès au fichier de traitement sans passer par le fichier formulaire

Sauf que... ta solution n'est pas fiable !

en effet, je créé un formulaire, je met en action l'adresse de ta page de traitement, je fais un champs (ou une variable dans l'url), au choix, qui indique que validonclick vaut J4k3kk4h3s3k4j (ou autre chose, il me suffit de regarder le code source de la page du formulaire), et je fais ce que je veux.

La vérification d'un champs post n'est pas plus efficace hmm

Quand au $_SERVER['HTTP_REFERER'], et bien, il n'est pas fiable non plus ! En effet, c'est le navigateur client qui fourni cette info. Dans certains cas, il ne le fourni pas (du coup, pas fausse detection de problème), dans d'autres, il suffit que le pirate spécifie comme referer l'adresse du formulaire (compliqué ? regardez donc : https://addons.mozilla.org/fr/firefox/addon/953 ).

Il faut donc être très prudent pour ce genre de vérifications. L'utilisation d'une variable a valeur secrete via une session pourrait être une bonne solution, mais comme le phpsessid est défini dans un cookie, il suffit au pirate de le récupérer pour garder la session. Ceci dit, c'est deja plus compliqué. Avec quelques variations de plus, on peut encore rajouter de la complexité.

Ceci dit, l'idéal ca reste que  la page de traitement vérifie scrupuleusement chaque entrée, de manière a ce que même si son appel vient d'ailleurs que du formulaire, cela n'entraine pas de degats.

@+


la v2, c'est tabou, on en viendra tous a bout

Hors ligne

#8 27-04-2010 05:16:21

dan4
Membre
Inscription : 10-01-2010
Messages : 128

Re : Accès au fichier de traitement sans passer par le fichier formulaire

Mon but n'est pas réèlement de placer une protection mais plutôt d'obliger un passage obligé à la page formulaire.

avec ceci :

while($affiche_commentaire = mysql_fetch_array($result))
 {

   echo '<tr>
   <td>'.$affiche_commentaire["id"].'</td>
   <td>'.$affiche_commentaire["pseudo"].'</td>
   <td><a href="modifier.php?id='.$affiche_commentaire["id"].'&validonclick=J4k3kk4h3K3k4j">Modifier</a></td>
   <td><a href="supprimer.php?id='.$affiche_commentaire["id"].'&validonclick=J4k3kk4h3K3k4j" onclick ="if(!confirm(\'Voulez-vous Supprimer\')) return false;">Supprimer</a></td>
   </tr>';

 }

J'ai pensé changer les deux liens pour deux FORM afin de pouvoir avoir une variable à tester dans la page destination.


Salutations smile

Hors ligne

Pied de page des forums