57 votes

Refuser l'accès aux dossiers .svn sur Apache

Nous avons une application rails dans la subversion que nous déployons avec Capistrano, mais ont remarqué que l'on peut accéder aux fichiers dans"/.svn", qui présente un problème de sécurité.

Je voulais savoir quelle est la meilleure façon de le faire. Quelques idées:

  • Mondial de configuration d'Apache pour refuser l'accès
  • L'ajout d' .htaccess dans le dossier public et de tous les sous-dossiers
  • Cap tâche qui modifie les permissions

Je n'aime pas vraiment l'idée de supprimer les dossiers ou de l'utilisation de svn à l'exportation, car je tiens à garder le svn info " autour de.

63voto

Vinko Vrsalovic Points 116138

La meilleure option consiste à utiliser la configuration Apache.

L'utilisation de htaccess ou de la configuration globale dépend principalement du contrôle de votre serveur.

Si vous le faites, vous pouvez utiliser quelque chose comme

<DirectoryMatch. * \. Svn / .*>
    Refuser à tous
</ DirectoryMatch>

Si vous ne le faites pas, vous pouvez faire quelque chose de similaire dans les fichiers .htaccess avec FilesMatch

43voto

csexton Points 8089

Une autre façon de les protéger .fichiers svn serait d'utiliser une redirection dans la config d'Apache:

RedirectMatch 404 /\\.svn(/|$)

Donc, au lieu d'obtenir un 403 forbidden (et de fournir des indices à serait attaquants) vous obtenez une erreur 404, qui est ce que l'on pourrait s'attendre quand au hasard en tapant dans les chemins.

30voto

Riccardo Galli Points 2653

Je n'aime pas l'idée de 404ing chaque fichier startig d'esprit d'un point. Je voudrais utiliser une approche plus sélective, avec le cv que j'utilise dans le projet (svn dans l'exemple)

RedirectMatch 404 /\\.svn(/|$)

ou un fourre-tout cvs systèmes

RedirectMatch 404 /\\.(svn|git|hg|bzr|cvs)(/|$)

-- réponse dépassée suit (voir les commentaires) --

Je ne peux pas écrire de commentaires pour l'instant donc... La réponse de csexton est incorrect, car un utilisateur ne peut pas accéder .svn dossier, mais il peut accéder à tous les fichiers à l'intérieur ! par exemple, vous pouvez accéder à http://myserver.com/.svn/entries

La bonne règle est

RedirectMatch 404 /\\.svn(/.*|$)

14voto

triemstr Points 166

Je pense que Riccardo Galli a raison. Même apache avait déjà .svn installation interdit pour moi, mais .svn/entries était certainement disponible...d'exposer mon serveur svn, numéro de port, nom d'utilisateur, etc.

J'ai fait la figure, pourquoi ne pas restreindre .git comme une mesure préventive (dire vous n'avez pas l'utilisation de git encore, mais peut-être un jour à laquelle vous n'aurez pas à penser sur le répertoire de restrictions).

Et puis j'ai pensé, pourquoi ne pas limiter tout ce qui doit être caché de toute façon? Quelqu'un peut-il concevoir un problème avec cela?

RedirectMatch 404 /\\..*(/.*|$)

J'ai ajouté de l' '.*' après la période initiale, à la seule différence de Riccardo. Semble 404 .le svn .git, .bla, etc.

6voto

Je préfère refuser l'accès à tous les dot-fichiers (par exemple: .htaccess, .le svn .xxx, etc.), comme ils n'ont pas besoin d'être accessible sur le web.

Voici la règle de réaliser ceci:

<LocationMatch "\/\..*">
    Order allow,deny
    Deny from all
</LocationMatch>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X