PHP protéger répertoire de direct URL d'accès
J'ai un ADMIN script.
admin/index.php
L'ensemble de l'activité est réalisée à travers la index.php
fichier.
Les utilisateurs se connectent avant d'accéder à la fonctionnalité du produit.
$_SESSION['user_authenticated']
est créé et mis à vrai.
admin/template/..
Ce dossier contient images
, css
, javascript
fichiers.
Ils sont utilisés uniquement à l'intérieur de cette administration. (dans le backend seulement)
La question:
J'ai besoin de tout le contenu de admin/template/..
répertoire à protéger contre accès direct.
Il devrait être disponible uniquement aux utilisateurs authentifiés.
Je pense qu'il y a à être un .htaccess
en redirigeant les requêtes vers check_session_auth_variable.php
, qui a l'air si $_SESSION['user_authenticated']
est vrai ou faux et redirige vers fichier demandé ou renvoie une erreur 404?
Je sais que la meilleure option serait de placer le répertoire en dehors de la racine web, mais dans mon cas, j'ai besoin de conserver la structure de répertoire est, sans modification.
deny from all
et c'est tout. BEAUCOUP de populaires wordpress blogs ont ouvert l'accès à /wp_admin/*
(exemple) et c'est vraiment ok tant qu'il n'y a pas de problème de sécurité dans vos fichiers phpPourquoi serait-il mal quand quelqu'un non autorisé serait de voir les images, feuilles de style, ou des fichiers JavaScript? Est-il des données sensibles?
Szymkowski Merci pour la réponse. Et merci pour l'idée d'utiliser
deny from all
, si nécessaire, je pense qu'il peut être utilisé avec allow from IP
.Non il n'y a pas de données sensibles dans ces fichiers, donc pour l'instant, je vais probablement aller avec la manière la plus simple comme Peter Szymkowski proposé.
OriginalL'auteur acoder | 2013-01-20
Vous devez vous connecter pour publier un commentaire.
admin/.htaccess:
admin/check_auth.php:
D'accord, c'est une mauvaise idée pour la haute-trafic panneau d'admin. Il y a quelques chose que nous pouvons toujours le faire: 1. restreindre le panneau d'administration pour quelques ips. 2. nettoyer le code js de vulnerabity 3. changer le panneau d'administration dir nom à quelque chose comme "/admin6234123312" :]
Juste une autre remarque, évidemment, vous allez avoir à faire quelques contrôles de sécurité supplémentaires avant tout
readfile()
ing le fichier. Depuis PHP/Apache est susceptible d'avoir accès à plus de fichiers sur le serveur, ce qui rend le script ouvrir à l'exploitation pour accéder aux fichiers de l'utilisateur ne devrait pas être en mesure de. Si quelqu'un détourne une session admin ils pourraient techniquement utilisez ce fichier pour lire n'importe quel fichier sur votre site en clair (noms d'utilisateur, mots de passe, informations de base de données, etc). À condition qu'ils connaissaient le chemin d'accès au fichier de cours.Je voulais dire plus sur le PHP côté. Par exemple si je demande de l' .htaccess dans le répertoire du script PHP serait susceptible d'avoir l'autorisation de le lire et il produirait le contenu du fichier de moi par readfile. En va de même pour tout les fichiers de configuration. De plus je pourrais utiliser ../ dans ma demande de chemin à parcourir à l'extérieur de l'admin répertoire racine et d'obtenir tous les fichiers sur le site.
Non, il n'est pas.
check_auth.php?file=/etc/hosts
est encore possible.OriginalL'auteur Peter
Ok, voici ma réponse et c'est vrai que la meilleure réponse est "non". Mais les images/js/css sont relativement importantes dans le développement, avant de devenir public lorsque live) et des aperçus pour les clients exigent que nous ne pouvons pas faire une IP en fonction de apache règle. Donc, la règle (à partir de ci-dessus, légèrement modifiée) est
(parce que j'avais besoin d'un peu de sous-répertoires dont le contenu est en effet public, lire: les images/css/js utilisées sur la page de connexion)
et le php est comme suit; pour
ce que ce n'est exécute php à l'aide de
call_user_func()
à arrêter la pollution de l'espace de noms,include()
pour exécuter du PHP, etchdir()
assurez-vous que le script est un bon répertoire de travail courant.C'est le "facile"; le contenu des en-têtes et le type mime être 'deviner' (j'ai utilisé finfo pour les types mime, mais il a un bug au 2013, et cela ne sert qu'à exacerber le problème), mais même apache ne peut pas le faire à 100% correctement...
Puis supprimer les en-têtes pour les images, sinon vous ne serez pas seulement être souvent comme des pages php...
il suffit de dire; vous avez seulement besoin de faire cela si vous avez d'épaisseur des tuyaux et beaucoup de cycles de cpu vous n'avez pas besoin...
OriginalL'auteur lol
J'ai l'habitude d'utiliser ce
OriginalL'auteur Ravoan