apache .htaccess

apache - .htaccess, orden permitir, negar, negar de todos: ¿confundido?



(1)

Esta es una forma bastante confusa de usar las directivas de configuración de Apache.

Técnicamente, el primer bit es equivalente a

Allow From All

Esto se debe a que Order Deny,Allow hace que la directiva Deny se evalúe antes que las Directivas Allow. En este caso, Denegar y Permitir conflictos entre sí, pero Permitir, al ser el último evaluado coincidirá con cualquier usuario, y se otorgará el acceso.

Ahora, solo para aclarar las cosas, este tipo de configuración es MALA y debe evitarse a toda costa, porque limita el comportamiento indefinido.

Las secciones de límite definen qué métodos HTTP tienen acceso al directorio que contiene el archivo .htaccess.

Aquí, los métodos GET y POST tienen acceso permitido y los métodos PUT y DELETE tienen acceso denegado. Aquí hay un enlace que explica cuáles son los diversos métodos HTTP: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

Sin embargo, es más que inútil usar estas limitaciones siempre y cuando no tenga scripts CGI personalizados o módulos de Apache que manejen directamente los métodos no estándar (PUT y DELETE), ya que, de forma predeterminada, Apache no los maneja en absoluto. .

También se debe tener en cuenta que existen algunos otros métodos que también pueden ser manejados por Limit, a saber, CONECTAR, OPCIONES, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK y UNLOCK.

El último bit también es ciertamente inútil, ya que cualquier instalación de Apache correctamente configurada contiene la siguiente pieza de configuración (para Apache 2.2 y anteriores):

# # The following lines prevent .htaccess and .htpasswd files from being # viewed by Web clients. # <Files ~ "^/.ht"> Order allow,deny Deny from all Satisfy all </Files>

que prohíbe el acceso a cualquier archivo que comience por ".ht".

La configuración equivalente de Apache 2.4 debería verse como:

<Files ~ "^/.ht"> Require all denied </Files>

En mi .htaccess, tengo lo siguiente:

<Limit GET POST> order deny,allow deny from all allow from all </Limit> <Limit PUT DELETE> order deny,allow deny from all </Limit> <Files .htaccess> order allow,deny deny from all </Files>

Ahora, ¿soy simplemente estúpido o algo está mal? Busqué en línea y en la documentación de Apache y no entiendo el limit get post put delete etc., pero lo puse en el pensamiento de que todo lo que está haciendo está diciendo que se lo permita, después de permitir que se lo niegue nuevamente. Simplemente no tiene sentido para mí y no estoy seguro de si debo quitarlo de .htaccess o corregirlo si está mal. Supongo que el tercero significa denegar el acceso al archivo .htaccess, pero esta orden permite entonces negar parece que primero permite y luego deniega inmediatamente.