绕过推荐人的基本身份验证
Bypass basic authentication for referrer
我编写了一段非常糟糕的 htaccess 代码作为让我们继续前进的权宜之计,但糟糕的代码让每个人都不高兴。所以这里是:
DomainA.com 托管一些我们需要拉入 DomainB.com 和 DomainB.com.
的所有子域的代码
这是我们想出的可怕的代码,并在 DomainA.com 的 htaccess 文件上运行:
<If "%{HTTP_REFERER} == 'https://DomainB.com/testpage1.php'">
</If>
<ElseIf "%{HTTP_REFERER} == 'https://DomainB.com/testpage2.php'">
</ElseIf>
<ElseIf "%{HTTP_REFERER} == 'https://DomainB.com/testpage3.php'">
</ElseIf>
<Else>
AuthType Basic
AuthName "Our Walled Garden - Login Credentials Required"
AuthUserFile /path/to/.htpasswd
Require valid-user
</Else>
你能帮我们 trim 把它写下来,这样我们就不必为请求定义协议或特定的子域了吗?我弄乱了一些正则表达式,我什至无法在 IF 块中进行简单的正则表达式匹配。
如果您想使用正则表达式,可以使用 SetEnvIf
和附加的 Require
子句。
可能是这样的:
SetEnvIfNoCase Referer ^https://DomainB\.com/(testpage1|testpage2|testpage3)\.php$ noauth=1
AuthType Basic
AuthName "Our Walled Garden - Login Credentials Required"
AuthUserFile /path/to/.htpasswd
Require valid-user
Require env noauth
当有多个Require
指令时,它们会自动分组为"Require Any"(参见Require
apache 2.4 docs)。
Setenv 指令与 referer 匹配,如果匹配 "noauth" env 变量就会被设置。然后 require 指令说 valid-user 或 noauth env 变量将满足访问。
请注意,referer 很容易被伪造,因此这并不是很安全。
我编写了一段非常糟糕的 htaccess 代码作为让我们继续前进的权宜之计,但糟糕的代码让每个人都不高兴。所以这里是:
DomainA.com 托管一些我们需要拉入 DomainB.com 和 DomainB.com.
的所有子域的代码这是我们想出的可怕的代码,并在 DomainA.com 的 htaccess 文件上运行:
<If "%{HTTP_REFERER} == 'https://DomainB.com/testpage1.php'">
</If>
<ElseIf "%{HTTP_REFERER} == 'https://DomainB.com/testpage2.php'">
</ElseIf>
<ElseIf "%{HTTP_REFERER} == 'https://DomainB.com/testpage3.php'">
</ElseIf>
<Else>
AuthType Basic
AuthName "Our Walled Garden - Login Credentials Required"
AuthUserFile /path/to/.htpasswd
Require valid-user
</Else>
你能帮我们 trim 把它写下来,这样我们就不必为请求定义协议或特定的子域了吗?我弄乱了一些正则表达式,我什至无法在 IF 块中进行简单的正则表达式匹配。
如果您想使用正则表达式,可以使用 SetEnvIf
和附加的 Require
子句。
可能是这样的:
SetEnvIfNoCase Referer ^https://DomainB\.com/(testpage1|testpage2|testpage3)\.php$ noauth=1
AuthType Basic
AuthName "Our Walled Garden - Login Credentials Required"
AuthUserFile /path/to/.htpasswd
Require valid-user
Require env noauth
当有多个Require
指令时,它们会自动分组为"Require Any"(参见Require
apache 2.4 docs)。
Setenv 指令与 referer 匹配,如果匹配 "noauth" env 变量就会被设置。然后 require 指令说 valid-user 或 noauth env 变量将满足访问。
请注意,referer 很容易被伪造,因此这并不是很安全。