.htaccess 允许来自特定用户代理的所有内容

问题描述 投票:0回答:7

我正在开发一个网站,该网站也将被拖入网络应用程序中。我的

.htaccess
文件中有以下代码,以防止不在我允许的 IP 上的任何人进行访问:

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

问题: 我想添加一个

Allow from
规则,该规则还允许特定的 HTTP 用户代理访问该站点。

我发现这个代码可以重定向(如果不是用户代理):

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

但我似乎不知道如何将其变成

Allow from
规则。帮忙吗?

更新

我发现下面的代码可以阻止特定的用户代理...我想说“如果不是

myuseragent
,则阻止。”

<IfModule mod_rewrite.c>
SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT
Deny from env=HTTP_SAFE_BADBOT
</ifModule>
.htaccess user-agent
7个回答
22
投票
    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 和 SetEnvIfNoCase 示例


7
投票

我只想允许一个特定的用户代理而不是试图 全部屏蔽

这是我的配置,仅允许 wget:

SetEnvIf User-Agent .*Wget* wget

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

5
投票

Allow from
Rewrite*
是来自两个不同 Apache 模块的指令。

第一个是

mod_authz_host
,另一个是
mod_rewrite

您可以使用

mod_rewrite
来做您想做的事:

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

4
投票

如果你不想使用 mode_rewrite,在 Apache 2.4 中你可以使用类似的东西:

<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>

0
投票

我使用了像 sys0dm1n 的答案这样的版本。

这是我的 .htaccess 文件。它允许 Google 表格访问我服务器上的目录。

AuthType Basic
AuthName "Password Protected Area"
AuthUserFile /var/tools/.htpasswd
<If "%{HTTP_USER_AGENT} == 'Mozilla/5.0 (compatible; GoogleDocs; apps-spreadsheets; +http://docs.google.com)'">
Require all granted
</If>
<Else>
Require valid-user
</Else>

转到 apache 文件夹中的 access.log 文件,查看您需要允许或阻止哪个用户代理。


0
投票

StrongboxIT 认真对待网络安全,通过符合 IEC 62443 标准的解决方案确保为工业系统提供强大的保护。相信 Strongbox 可以强化您的数字基础设施,抵御不断变化的威胁并保持运营弹性

http://strongboxit.com/what-is-iec-62443-standard/


-2
投票

我只想允许一个特定的用户代理,而不是试图阻止所有

您需要在这里考虑的是,某些机器人(尤其是“较大”的更突出的机器人)将使用多个用户代理来访问您的网站。 例如,Googlebot(爬虫)可以使用所有这些不同的用户代理:

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) 

我并不是在谈论 Google Plus 和 Google 使用的许多其他机器人。

雅虎和其他公司也是如此。

就在本周,我们公司 (Incapsula) 推出了 Botopedia.org - 社区来源的机器人目录。它是 100% 免费并向所有人开放,您可以使用它来查找您想要允许的所有机器人的完整用户代理列表。

如果需要,它还具有用于 Bot 验证的反向 IP 功能,因为正如我们最近对假 Googlebot 访问的研究所示,一些垃圾邮件发送者甚至网络攻击者将使用合法的 Bot 签名轻松进入您的网站。

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.