| ||||||||
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é | ||||||||
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 | |||||||
Petit astucien | Bonsoir,
Donc, çà se jouerait dans le web.config, <security>, <requestFiltering>, <denyUrlSequences>, j'y regarde dès que possible.
Merci ! | |||||||
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. | |||||||
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. | |||||||
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:
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:
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 | |||||||
|
Les bons plans du moment PC Astuces | Tous les Bons Plans | |||||||||||||||
|