使用 index.php 和不使用它的 url 绕过 htpasswd 身份验证

Posted

技术标签:

【中文标题】使用 index.php 和不使用它的 url 绕过 htpasswd 身份验证【英文标题】:Bypass htpasswd authentication for url with index.php and without it 【发布时间】:2015-05-30 12:05:07 【问题描述】:

我已经添加了使用 htaccess 文件进行身份验证的 htpasswd 保护,现在我想绕过 www.website.comwww.website.com/index.php 的身份验证,其中两个 url 都在访问 index.php 文件。通过使用下面的 htaccess 文件,我允许 index.php 并且我能够绕过 www.website.com/index.php url 但不能绕过 www.website.com

我的 htaccess 文件是:

# set an environtment variable "noauth" if the request starts with "/callbacks/"
SetEnvIf Request_URI ^/index.php noauth=1

AuthType Basic

AuthName "RESTRICTED"
#AuthName "Restricted Area"

AuthUserFile "/path/to/.htpasswd"

require valid-user

Options -Indexes
Options +FollowSymlinks
RewriteEngine On
RewriteBase /

RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^([^.]+)$ /file.php?show=all&name=$1 [L]

# Here is where we allow/deny
Order Deny,Allow
Satisfy any
Deny from all
Require valid-user
Allow from env=noauth

【问题讨论】:

【参考方案1】:

我相信第二个参数只是使用常规正则表达式。也许你可以让 index.php 成为可选的。

 SetEnvIf Request_URI "^/(index\.php)?$" noauth=1

没有测试。

【讨论】:

是的,它起作用了,但是这个和我之前的代码有一些不同的地方。当我打开 www.website.com 或 www.website.com/index.php 时,它会继续询问用户名和密码,尽管昨天使用 index.php 的 url 工作正常,当我单击取消而不是显示需要授权时(401) 它显示来自 index.php 的内容,在 firebug 控制台内的 style/images/js 文件夹出现 401 错误。这意味着它允许显示来自 index.php 页面的内容,但为什么它要求在此页面上输入用户名和密码。 ^^^ 可能是因为它拒绝从 style/css/images/js 文件夹访问,但是如何克服这种情况。如何达到我的要求。 是的,这就是我正在寻找的内容,并且由于其他文件夹被禁止,它会显示身份验证弹出窗口。我只是允许这些文件夹以及它现在工作。

以上是关于使用 index.php 和不使用它的 url 绕过 htpasswd 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

从 zend 框架上 apache 2.4.6 的 url 中删除 index.php

HTACCESS 重写:忽略语言代码并将 index.php 添加到 url 而不更改它

从 url (codeigniter) 中删除 index.php 时 .htaccess 防止显示文件

如何使用index.php生成Laravel 4 URL?

url后面带.json和不带的区别是啥

使用htaccess从url中删除“index.php?access =”