用于阻止libwww-perl的Apache规则之间的区别

Yas*_*aya 5 apache security .htaccess libwww-perl block

我想知道这些规则之间的区别,哪个是最有效的阻止libwww-perl的文件.htaccess

SetEnvIfNoCase User-Agent "libwww-perl" bad_bot
Order Deny,Allow
Deny from env=bad_bot
Run Code Online (Sandbox Code Playgroud)

要么

RewriteCond %{HTTP_USER_AGENT} libwww-perl.* 
RewriteRule .* – [F,L]
Run Code Online (Sandbox Code Playgroud)

谢谢!

Smi*_*gos 0

从功能上来说,我认为它们大致相同,只是有一些小的优点和缺点。然而,前者可能更便携,因为如果您将来某个时候移动站点,您不必担心 mod_rewrite 会安装在服务器上。

当然,如果您有其他 mod_rewrite 规则,这对您来说不会有太大影响。

您还在 mod_rewrite 规则中设置了通配符,但 SetEnvIfNoCase 中不存在该通配符。我知道也可以在那里执行此操作,并且这样做可能是明智的,因为您可以捕获不同的 libwww 版本。

我确信您知道 libwww-perl 可以发送任意用户代理字符串,因此两者都不会停止确定。