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.