Interdire l'accès à un fichier php mais pas l'execution de celuici

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

chuck2008
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 33
Inscription: 21 Juil 2008

Interdire l'accès à un fichier php mais pas l'execution de celuici

Message le Sam Juil 24, 2010 7:26

Bonjour,

Mon formulaire de contact fait appel à un fichier .php lorsqu'on clique sur le bouton envoyer de mon formulaire:
envoi-mail.php

Celui-ci est placé dans le dossier:/media/script/envoi-mail.php

Il me permet la génération d'un mail en texte enrichi et formaté.

Depuis le lancement du site, j'ai 3 à 4 mails envoyés par semaine qui sont vierges. Je pense que cela vient du fait que dans le code source de mon formulaire, on distingue clairement quel script est appelé et à quel endroit.

http://www.quai-west-nautique.com/contactez-nous.html

J'ai essayé de placer un fichier .htaccess dans le dossier script
<files envoi-mail.php>
order allow,deny
deny from all
</files>

Mais celui-ci me génère une erreur 500. Je suis sur un serveur mutualisé. (strato-hebergement)

Je souhaiterai qu'on ne puisse pas accéder directement à l'URL suivante:
http://www.ndd.com//media/script/envoi-mail.php

Mais qu'il continue à fonctionner lorsque qu'il est appelé par le bouton Envoyer.

En vous remerciant d'avance.

Cordialement

Acerouk
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 416
Inscription: 16 Fév 2008

Re: Interdire l'accès à un fichier php mais pas l'execution de celuici

Message le Sam Juil 24, 2010 8:30

Pas sur que tu puisse faire ce que tu demandes...

Par contre je vois que le formulaire est vérifié uniquement en javascript, un robot ou un visiteur ayant désactivé le JS peut t'envoyer un formulaire vide en cliquant sur le bouton.

Je te conseille de doubler les vérifs JS par les mêmes dans ton fichier php et ne pas envoyer le mail si nok.


bruno212
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 497
Inscription: 13 Fév 2005

Re: Interdire l'accès à un fichier php mais pas l'execution de celuici

Message le Sam Juil 24, 2010 11:48

Bonjour,

Il te suffit de programmer ton script de mail de telle sorte que les messages vides ne soient pas envoyés.

Il faut vérifier, par exemple, que les champs expéditeur, titre du message, corps du message soient bien remplis, sinon le message ne part pas.

Ainsi, tu n'auras plus de mail vide.

Bonne journée.


spout
WRInaute accro
WRInaute accro
 
Messages: 4378
Inscription: 14 Mai 2003

Re: Interdire l'accès à un fichier php mais pas l'execution de celuici

Message le Sam Juil 24, 2010 11:56

Et vu que tu ne fais pas (encore) de validation au niveau du serveur, je te conseille de lire cet article:
http://www.phpsecure.info/v2/article/MailHeadersInject.php

Rod la Kox
WRInaute accro
WRInaute accro
 
Messages: 3253
Inscription: 24 Juin 2008

Re: Interdire l'accès à un fichier php mais pas l'execution de celuici

Message le Sam Juil 24, 2010 13:55

Les sessions sont tes amis...
Dans la page de ton formulaire tu créés la variable de session "formOK"
Dns la page de validation, tu vérifies qu'elle existe.
Si oui, tu exécute la routine puis tu détruit la variable, si non, tu expulses du site en détruisant aussi la variable.

Tu peux améliorer en entrant les ip indésirable dans une table et aller vérifier à chaque fois... Si l'IP tente plus de x fois d'exécuter le fichier, tu la ban via le .htaccess

chuck2008
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 33
Inscription: 21 Juil 2008

Re: Interdire l'accès à un fichier php mais pas l'execution de celuici

Message le Dim Juil 25, 2010 7:54

Rod la Kox a écrit:Les sessions sont tes amis...
Dans la page de ton formulaire tu créés la variable de session "formOK"
Dns la page de validation, tu vérifies qu'elle existe.
Si oui, tu exécute la routine puis tu détruit la variable, si non, tu expulses du site en détruisant aussi la variable.

Tu peux améliorer en entrant les ip indésirable dans une table et aller vérifier à chaque fois... Si l'IP tente plus de x fois d'exécuter le fichier, tu la ban via le .htaccess


Merci pour vos conseils avisés.

Je vais essayer la dernière proposition avec la variable de session.

Merci à tous

A.B

chuck2008
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 33
Inscription: 21 Juil 2008

Re: Interdire l'accès à un fichier php mais pas l'execution de celuici

Message le Dim Juil 25, 2010 13:17

bruno212 a écrit:Bonjour,

Il te suffit de programmer ton script de mail de telle sorte que les messages vides ne soient pas envoyés.

Il faut vérifier, par exemple, que les champs expéditeur, titre du message, corps du message soient bien remplis, sinon le message ne part pas.

Ainsi, tu n'auras plus de mail vide.

Bonne journée.


Je viens d'ajouter une vérification php sur mon formulaire.

Maintenant il faut que je vois si je ne vais plus recevoir de formulaire vide....

Merci


zeb
WRInaute accro
WRInaute accro
 
Messages: 4560
Inscription: 5 Déc 2004

Re: Interdire l'accès à un fichier php mais pas l'execution de celuici

Message le Dim Juil 25, 2010 13:55

il y a beaucoup plus simple et d'ailleurs tu n'aurais pas deux script pour envoyer un mail si tu l'avais su avant.

il y a plusieurs façons d'attaquer un script via un navigateur :
- en GET (cas classique) c'est vraisemblablement celui qui te dérange vue que l'url de ton script d'envoie est 'libre'.
- en POST (suite a la validation d'un formulaire method="post") et c'est ça qui est le truc le plus simple et le moins tordu.
- en .... d'autres trucs sans intérêt.

Code: Tout sélectionner
if(isset($_POST['un_champ_du_formulaire_mail'])){
   ton script de formatage envoie(...)
}else{
   exit();
}

Rod la Kox
WRInaute accro
WRInaute accro
 
Messages: 3253
Inscription: 24 Juin 2008

Re: Interdire l'accès à un fichier php mais pas l'execution de celuici

Message le Dim Juil 25, 2010 14:29

Zeb, c'est plus simple mais pas sécurisé.
Un $_POST peut-être forcé à la différence d'un $_SESSION. ;-)


... etil peut même utiliser session_regenerate_id() au cas ou ila paeur qu'on lui hack ses session_id


zeb
WRInaute accro
WRInaute accro
 
Messages: 4560
Inscription: 5 Déc 2004

Re: Interdire l'accès à un fichier php mais pas l'execution de celuici

Message le Dim Juil 25, 2010 17:50

Rod la Kox a écrit:Zeb, c'est plus simple mais pas sécurisé.
Un $_POST peut-être forcé à la différence d'un $_SESSION. ;-)
... etil peut même utiliser session_regenerate_id() au cas ou ila paeur qu'on lui hack ses session_id


reco pour toi c'est vrai que c'est moins 'sécu' mais bon de toi a moi si il filtre les entêtes avant d'envoyer le mail pour éviter les spams massif ça risque quoi de se faire taquiner le formulaire ? j'en connais pas beaucoup qui vont s'éxiter dessus plus de 30 seconde quand ils auront compris que le mail part pas.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités