2012-08-08 28 views
14

Tengo un sitio web que estoy desarrollando que también se incluirá en una aplicación web. Tengo el siguiente código en mi archivo .htaccess para evitar el acceso de cualquier persona que no está en mi IP permitida:.htaccess Permitir todo desde el agente de usuario específico

Order deny,allow 
Deny from all 
AuthName "Restricted Area - Authorization Required" 
AuthUserFile /home/content/html/.htpasswd 
AuthType Basic 
Require valid-user 
Allow from 12.34.567.89 
Satisfy Any 

PREGUNTA: Me gustaría añadir una regla de Allow from que permitirá también un agente de usuario HTTP específica acceso al sitio.

me encontré con este código para redirigir si no el agente de usuario:

RewriteEngine on 
RewriteCond %{HTTP_USER_AGENT} !=myuseragent 
RewriteRule ^files/.*$/[R=302,L] 

Pero me parece que no puede encontrar la manera de convertir esto en una regla de Allow from. ¿Ayuda?

ACTUALIZACIÓN

me encontré con el siguiente código para bloquear los agentes de usuario específicos ... en lugar me gustaría decir "si NO myuseragent, entonces el bloque."

<IfModule mod_rewrite.c> 
SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT 
Deny from env=HTTP_SAFE_BADBOT 
</ifModule> 

Respuesta

14
SetEnvIfNoCase User-Agent .*google.* search_robot 
SetEnvIfNoCase User-Agent .*yahoo.* search_robot 
SetEnvIfNoCase User-Agent .*bot.* search_robot 
SetEnvIfNoCase User-Agent .*ask.* search_robot 

Order Deny,Allow 
Deny from All 
Allow from env=search_robot 

Htaccess SetEnvIf and SetEnvIfNoCase Examples

+0

I fo y el código que acaba de publicar en SO también ... Solo quiero permitir UN agente de usuario ESPECÍFICO en lugar de intentar bloquearlo todo (no quiero arriesgarme a perder uno). ¿Alguna idea? – adamdehaven

+0

@ AdamD He mejorado mi respuesta. ¿No resuelve tu problema ahora? –

+0

@ AdamD correctamente. –

5

Allow from y Rewrite* son directivas de dos módulos diferentes de Apache.

El primero es mod_authz_host y el otro de mod_rewrite.

Puede utilizar mod_rewrite a hacer lo que quiera:

RewriteEngine on 
RewriteCond %{HTTP_USER_AGENT} !=myuseragent 
RewriteRule .* - [F,L] 
+0

Entonces, con el código que ha publicado, ¿funcionará esto en TODOS los directorios? ¿O tendré que colocar un archivo '.htaccess' con este código en cada directorio? – adamdehaven

+0

@AdamD: esto funcionará para cualquier URL. – InternetSeriousBusiness

+0

Esto es genial, puedo usar 'RewriteCond% {HTTP_USER_AGENT}! (Mozilla)' y solo permitirá aquellos con un navegador user agent/no-bot – chiappa

-1

sólo quiero permitir que un agente de usuario específico en lugar de tratar de bloquear todo el

Hola

Lo debes tener en cuenta que algunos bots (especialmente los "más grandes" más prominentes) utilizarán varios user-agents para acceder a tu sitio. Por ejemplo, un robot de Google (rastreador) pueden utilizar todos estos diferentes agentes de usuario:

Googlebot-Image/1.0 
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) 
DoCoMo/2.0 N905i(c100;TB;W24H16) (compatible; Googlebot-Mobile/2.1;+htt://www.google.com/bot.html) 
GoogleProducer 
SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html) 
Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html) 
Google-Site-Verification/1.0 
Google-Test 
Googlebot/2.1 (+http://www.google.com/bot.html) 

y `m no evento hablando de Google Plus y muchos otros robots utilizados por Google.

Igual va para Yahoo y otros.

Justo esta semana nuestra compañía (Incapsula) lanzó Botopedia.org - a Community-Sourced bot directory. Es 100% gratuito y abierto para todos, y puedes usarlo para encontrar una lista completa de agentes de usuario para todos los bots que quieras permitir.

Si es necesario, también tiene una funcionalidad de IP inversa para la verificación de Bot porque, como ha demostrado recent study of Fake Googlebot visits, algunos spammer e incluso los ciberatacantes utilizarán firmas de bot legítimas para abrirse camino en su sitio.

Espero que esto ayude.

7

sólo quiero permitir que un agente de usuario específico en lugar de tratar de bloque de toda

Aquí está mi configuración para permitir sólo wget:

SetEnvIf User-Agent .*Wget* wget 

Order deny,allow 
Deny from all 
Allow from env=wget 
1

Si no desea use mode_rewrite, con Apache 2.4 puede usar algo similar a esto:

<Location /> 
       AuthType Basic 
       AuthName "Enter Login and Password to Enter" 
       AuthUserFile /home/content/html/.htpasswd 
       <If "%{HTTP_USER_AGENT} == 'myuseragent'"> 
       Require all granted 
       </If> 
       <Else> 
       Require valid-user 
       Require ip 12.34.567.89 
       </Else> 
</Location> 
Cuestiones relacionadas