php - sesion - .htaccess permite acceso a archivos solo desde incluye
share console (6)
Veo muchas respuestas con Permitir, Denegar, No negar, Permitir
El orden de esto importa y está causando el problema. Le está diciendo a la computadora que negar es más importante que permitir, porque está en la lista al final. Para mostrarte ... si dices:
<Files .htaccess>
Order Allow,Deny
Deny From All
Allow From xxx.xxx.xxx.xxx 127.0.0.1
</Files>
Está diciendo primero Permitir a alguien permitido, luego negar todo ... lo cual todavía niega TODO.
Si invierte a Denegar, Permita que diga Denegar todo y luego Permitir a cualquiera permitido.
<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 comando final, por lo tanto, permite los que figuran después del comando Permitir de.
xxx.xxx.xxx.xxx = Su IP
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 usarlos como acciones en formularios o enlaces.
Intenté usar un .htaccess con
<Files *>
Order Allow,Deny
Deny from All
</Files>
pero negó todo acceso incluso desde mis propios guiones. Lógico como me enteré, pero no sé cómo hacerlo funcionar. ¿Algunas ideas?
PD: Mi principal preocupación es que algunos de los archivos no están incluidos en los archivos principales de 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.
En su .htaccess, tendrá que especificar qué IP, hosts desea permitir y también puede hacerlo por directorio. por ejemplo
<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>
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á hosts específicos que permita, como localhost.
Esto también funciona con la directiva, no solo con el archivo, si solo quiere bloquear ciertos directorios.
Por lo general, para proteger estos archivos lógicos del acceso público, puede
- ponerlo en el directorio protegido, arriba de htdocs
- agregue un cheque para la constante pública ...
if(!is_defined(some_root_const)){die();}
- cambie la extensión a .inc o algo ... y niegue con .htaccess basado en eso
coloque el código de su aplicación fuera de su carpeta html pública. luego puede agregar una ruta de inclusión en la parte superior de sus scripts para permitir que su script acceda a ellos como si estuvieran en la misma carpeta.
Hay un método aún más seguro. Almacene sus archivos de inclusión debajo de las carpetas accesibles en la web. Entonces, si tus archivos web están aquí ...
/var/www/mysite.com/
Guarde sus archivos de inclusión aquí:
/ var / includes /
Luego inclúyalos con una ruta completa ...
include ''/var/includes/myincludes.inc.php'';
Desde la web, el archivo myincludes.inc.php es completamente inaccesible.