2012-03-22 13 views
6

Tengo varias subcarpetas en mi sitio web y me gustaría que el usuario no pueda acceder a ellas a través de la URL sino al mismo tiempo mis archivos PHP principales para poder incluirlos o utilícelos como acciones en formularios o enlaces..htaccess permite acceso a archivos solo desde incluye

He intentado utilizar un .htaccess con

<Files *> 
    Order Allow,Deny 
    Deny from All 
</Files> 

pero negó todo acceso incluso desde dentro de mis propios guiones. Lógico como me enteré, pero no sé cómo hacerlo funcionar. ¿Algunas ideas?

P.S. Mi principal preocupación es que algunos de los archivos no están incluidos en los principales archivos PHP PERO están vinculados allí y su código termina con un header('Location: ../index.php'); volviendo a la página principal del proyecto.

Respuesta

1

Por lo general, para proteger estos archivos lógicos de acceso público puede

  1. ponerlo en el directorio protegido, sobre htdocs
  2. añadir un cheque por constantes pública .. if(!is_defined(some_root_const)){die();}
  3. extensión cambio a .INC o algo .. y negar con .htaccess basado en que
3

No es un método aún más seguro. Almacene sus archivos de inclusión debajo de las carpetas accesibles en la web. Así que si sus archivos web están aquí ...

/var/www/mysite.com/

tienda sus archivos de inclusión aquí:

/var/includes/

luego incluirlos con una ruta completa ...

include '/var/includes/myincludes.inc.php'; 

Desde la web, el archivo myincludes.inc.php es completamente inaccesible.

3

hacer esto:

<Files *> 
    Order Deny,Allow 
    Allow from 192.168.100.123 127.0.0.1 
    Deny from all 
</Files> 

La lista de IP serán anfitriones específicos que permiten, como localhost.

Esto también funciona con la directiva, no solo con el archivo, si solo quiere bloquear ciertos directorios.

+0

lo probé con ' \t Orden allow, deny \t Permitir a 127.0.0.1 \t Denegar de todos ' pero bloquea toda archivos que son llamados desde funciones AJAX. –

+0

Por supuesto, porque son solicitados por el cliente. No puede "permitir que el cliente" y "no permita que el cliente" sirva archivos. – Ray

0

En su .htaccess, deberá especificar qué direcciones IP, hosts desea permitir y también puede hacerlo por directorio. por ej.

<Directory /dir/to/block> 
    Order Allow,Deny 
    Allow from 192.168.0.1 4.4.4.4 
    Deny from All 
</Directory> 
<Directory /dir/to/allow> 
    Order Allow, Deny 
    Allow from All 
</Directory> 
6

veo un montón de respuestas con permitir, denegar no niega, Permitir

el orden de este tema, y ​​es la causa del problema. Le está diciendo a la computadora que negar es más importante que permitir, porque está en la lista al final. Para mostrar que ... si usted dice:

<Files .htaccess> 
Order Allow,Deny 
Deny From All 
Allow From xxx.xxx.xxx.xxx 127.0.0.1 
</Files> 

Usted está diciendo primera Permitir que cualquiera mascotas, a continuación, Deny All ... que todavía niega todos.

Si invierte a Denegar, Permita que diga Denegar todo, luego Permitir a cualquiera.

<Files .htaccess> 
Order Deny,Allow 
Deny From All 
Allow From xxx.xxx.xxx.xxx 127.0.0.1 
</Files> 

Permitir comando, siendo más importante, porque es el último comando, por lo tanto, está permitiendo que los enumerados después Permitir Desde comando.

xxx.xxx.xxx.xxx = Su IP

Cuestiones relacionadas