> Tous les forums > Forum des Webmasters
 Interdire accès direct aux scripts php sous IIS 7.5Sujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
rdany62
  Posté le 22/02/2014 @ 22:37 
Aller en bas de la page 
Petit astucien

Bonjour,

Je commence à m'intéresser de près à la programmation php/HTML/CSS.

J'ai donc installé IIS 7.5 sur ma bécane de développement (Windows 7 x64), installé php, configuré le tout pour que le document par défaut soit index.php, configuré le debuggeur xdebug et installé la démo de 30 jours de l'extension PHP Tools pour Visual Studio, et installé MySQL et créé une BDD de test. Pas de SSL pour le site, et l'accès est anonyme (pas d'authentification).

J'ai écrit quelques lignes, çà marche nickel, j'accède sans pb à la BDD.

Mais j'ai une question: comment restreindre, via IIS, l'accès et l'exécution directe d'un script php enregistré dans un sous-répertoire du site ? C'est à dire, autoriser son exécution lorsqu'il est lancé depuis un autre script (ou une page HTML) et en interdire l'accès et l'exécution lorsque celui-ci est accédé via la barre d'adresse du navigateur (par ex: http://monsite/phpScripts/test1.php) ?

Question proche de la première: comment restreindre le téléchargement d'un fichier (feuille de style css, JPG, ...), utilisé par un script (ou utilisé dans une page html), contenu dans un sous répertoire (par ex: comment interdire le téléchargement direct de l'image /imgs/img1.png tout en permettant l'accès à cette image au script /index.php si l'utilisateur tape dans la barre d'adresse http://monsite/imgs/img1.png) ?

Merci !



Modifié par rdany62 le 22/02/2014 22:43
Publicité
zoulouman
 Posté le 03/03/2014 à 12:12 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

Mieux vaut tard que jamais.

En plaçant un fichier .HTACCESS dans les dossiers à protéger, ça devrait le faire.

Il suffit de regarder le referer de la requête.

Si l'adresse n'est pas celle que tu souhaites, la requête est rejetée.

C'est un peu le même problème que le hotlinking.

EDIT

J'allais oublier.

Pour avoir l'équivalent .HTACCESS sous IIS :

http://www.iis.net/learn/application-frameworks/install-and-configure-php-applications-on-iis/translate-htaccess-content-to-iis-webconfig



Modifié par zoulouman le 03/03/2014 12:24
rdany62
 Posté le 04/03/2014 à 20:11 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonsoir,

Donc, çà se jouerait dans le web.config, <security>, <requestFiltering>, <denyUrlSequences>, j'y regarde dès que possible.

Merci !

zoulouman
 Posté le 05/03/2014 à 20:50 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Désolé de ne pas pouvoir t'en dire plus, mais je suis beaucoup plus habitué aux solutions gratuites que sont Apache et toute la tribu.

Donne nous des nouvelles et, si tu peux, le bout de code qui va bien sous IIS pour les autres qui passeraient avec le même souci.

rdany62
 Posté le 08/03/2014 à 19:40 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonsoir,

Bien sur, je posterais le résultat. J'ai pas encore pu m'y atteler... peut être demain. En tout cas, même si tu te sers plus de solutions gratuites, merci pour les infos.

rdany62
 Posté le 17/03/2014 à 17:28 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour,

Bon ben voilà. J'ai tenté de modifier le web.config à la main, en suivant le lien.

Tout ce qui concerne la page par défaut, le filtrage, et le cache, çà marche.

Au niveau réécriture d'URL, nada, erreur à la ligne:

<sectionGroupname="system.webServer">

Le groupe system.webServer est déjà défini dans le fichier %systemroot%\system32\inetsrv\config\applicationhost.config, j'ai donc tenté en plaçant la section dans la section system.webServer de ce fichier et supprimer la section du web.config.

Plus d'erreur, mais toujours pas de réécriture d'URL, quelque soit la (les) règles que je mets dans mon web.config, IIS n'en tient pas compte.

Après avoir un peu réfléchi (il faut bien, parfois ;) ), je me suis dit qu'il devait me manquer quelque chose. Ah ben, oui, le module de réécriture d'URL pour IIS, faudrait peut-être l'installer ! Le lien pour un installateur autonome: ici. Il peut aussi être trouvé dans le Web Platform Installer.

J'ai nettoyé mon web.config et remis mon applicationhost.config d'origine, relancé inetmgr (le "Gestionnaire des services Internet (IIS)"), et j'ai pu configurer la réécriture d'URL graphiquement pour mon site de test.

Pour créer une règle qui envoie une page d'erreur 404 lorsque l'adresse contient, par ex, http://site/cssStyle.css, cliquer sur le site racine dans inetmgr, double cliquer sur "Réécriture d'URL" (dans le bas de la page d'accueil de la config du site), dans la liste des "règles de traffic entrant appliquées à l'URL de l'adresse demandée", faire un clic droit, "Ajouter des règles". Choisir "Blocage de demande", "OK".

Dans le champ "Modèle", saisir "/*.css" et dans la liste déroulante "Comment bloquer", choisir "Envoyer une réponse 404 (fichier introuvable)", puis "OK".

De cette manière, une erreur 404.0 devrait être envoyée au client lorsque celui-ci demandera directement un fichier css situé à la racine du site, mais si un script php ou une page html requiert un fichier css, çà marchera sans pb.

Exemple de web.config vierge après la manip:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="RequestBlockingRule1" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions>
<add input="{URL}" pattern="/*.css" />
</conditions>
<action type="CustomResponse" statusCode="404" statusReason="File or directory not found." statusDescription="The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable." />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

Merci !

[EDIT]

Tiens, après validation de ma réponse, je vois rien dans la citation pour le web.config. Je viens de modifier, dites le si çà a encore disparu.

[/EDIT]



Modifié par rdany62 le 17/03/2014 18:22
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
469,99 €Processeur AMD Ryzen 7 5800X à 469,99 €
Valable jusqu'au 22 Janvier

Cdiscount fait une promotion sur le tout nouveau processeur AMD Ryzen 7 5800X (8 coeurs, 3.8/4.7 GHz) qui passe à 469,99 € livré. On le trouve ailleurs (quand il est disponible !) autour de 550 €.


> Voir l'offre
53,99 €Disque dur Seagate BarraCuda 2 To à 53,99 €
Valable jusqu'au 22 Janvier

Amazon propose actuellement le disque dur Seagate BarraCuda - 2 To (ST2000DM008) à 53,99 € livré gratuitement. On le trouve ailleurs autour de 69 €. Ce disque dur 3.5 pouces SATA III tourne à 7200tr/min et possède 64Mo de cache. 


> Voir l'offre
109,99 €Disque dur Seagate NAS Iron Wolf 4 To à 109,99 €
Valable jusqu'au 20 Janvier

Cdiscount propose le disque dur Seagate IronWolf 4 To à 109,99 €. Ce disque dur 3.5 pouces SATA III est adapté aux NAS et ordinateurs qui fonctionnent 24h/24. On le trouve ailleurs autour de 130 €. 


> Voir l'offre

Sujets relatifs
Interdire l'accès de mon site à une adresse IP ?
Empecher l acces direct a une page du site ?
.htacces interdire l'accès à un dossier
Ligne sous les liens ...
Coupure de connexion sous Dreamweaver MX
créer un espace membre sous wordpress
Activer un sous domaine
Actualisation d'un sous formulaire
Pas d'accès à mon site web
problème accès site perso Orange
Plus de sujets relatifs à Interdire accès direct aux scripts php sous IIS 7.5
 > Tous les forums > Forum Forum des Webmasters