锁定仅对密码访问 Wiki,但通过 .htaccess 保持对子网开放

锁定仅对密码访问 Wiki,但通过 .htaccess 保持对子网开放

基本上,我们有一个 Wiki,里面存储了一些敏感信息 - 虽然不是我所知道的最好的,但我的前任设置了它。我希望能够向不在本地网络子网上的任何人请求密码访问权限。本地子网上的用户应该能够继续操作而无需输入密码。

以下 .htaccess 似乎不再起作用,因为它允许非本地访问而不需要密码:

AuthName "Our Wiki"
AuthType Basic
AuthUserFile /path/to/passwd/file
AuthGroupFile /dev/null
Require valid-user
Allow from 192.168
Satisfy Any
order deny,allow

我不知道为什么。它本应保护的 WikkaWiki 最近进行了升级,这破坏了 .htaccess 文件,所以我从内存/谷歌搜索中恢复了上述内容。也许我遗漏了一个重要的指令?

完整的.htaccess 如下:

AuthName "Our Wiki"
AuthType Basic
AuthUserFile /path/to/passwd/file
AuthGroupFile /dev/null
Require valid-user
Allow from 192.168
Satisfy Any

SetEnvIfNoCase Referer ".*(adultsite|picturesplace|learnthebiz|pi-o).*" BadReferrer

order deny,allow
deny from env=BadReferrer

<IfModule mod_rewrite.c>
        # turn on rewrite engine
        RewriteEngine on
        RewriteBase /
        # if request is a directory, make sure it ends with a slash
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^(.*/[^/]+)$ $1/

        # if not rewritten before, AND requested file is wikka.php
        # turn request into a query for a default (unspecified) page
        RewriteCond %{QUERY_STRING} !wakka=
        RewriteCond %{REQUEST_FILENAME} wikka.php
        RewriteRule ^(.*)$ wikka.php?wakka= [QSA,L]

        # if not rewritten before, AND requested file is a page name
        # turn request into a query for that page name for wikka.php
        RewriteCond %{QUERY_STRING} !wakka=
        RewriteRule ^(.*)$ wikka.php?wakka=$1 [QSA,L]
</IfModule>

答案1

你这句话错了

order deny,allow

应该

order allow,deny

看着那(这桌子mod_authz_host文档中

答案2

为什么您认为在 Wiki 中保存敏感信息是件坏事?如果您的 HTTP 连接通过 TLS 运行,则不会有任何危害。

对于您的问题。我们正在使用 MediaWiki,我刚刚尝试编辑 LocalSettings.php:

$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['read'] = false;

if ($_SERVER['REMOTE_ADDR']=='192.168.1.1') {
  $wgGroupPermissions['*']['read'] = true;
  $wgGroupPermissions['*']['edit'] = true;
}

...并且它有效。这段代码的作用是,如果用户未登录,它会阻止阅读/编辑。但如果客户端 IP 等于上面的 IP,它可以自由编辑和阅读 Wiki。

也许您可以采用类似的方式破解 WikkaWiki 的 PHP。

答案3

要将 wiki 限制为仅限获得登录凭据的用户,您可以编辑 wikka.php 第 405 行(正上方$wikka->Run),添加以下几行。

if('UserSettings' != $page and
   !is_array($wakka->GetUser())) {
    header('Location: /UserSettings');
    exit;
}

然后,在您的 wikka 配置中,您还需要阻止允许新注册通过。否则,有人可能会简单地注册并查看您的重要信息。在第 51 行,将以下内容从:

'allow_user_registration' => '1',

到:

'allow_user_registration' => '0',

现在,除了登录页面(“用户设置”)之外,每个人都需要输入密码才能访问任何 wiki 页面。这并不是一件坏事,因为登录后浏览 wiki 的速度会更快,因为它不需要进行主机名查找!

虽然不完全是我所希望的,但它确实有效。

感谢大家的所有建议。

答案4

尝试这个:

Order deny,allow
Deny from all
AuthName "Our Wiki"
AuthType Basic
AuthUserFile /path/to/passwd/file
AuthGroupFile /dev/null
Require valid-user
Allow from 192.168
Satisfy Any

您还应该考虑删除/注释掉这个块:

SetEnvIfNoCase Referer ".*($LIST_OF_ADULT_WORDS).*" BadReferrer

order deny,allow
deny from env=BadReferrer

因为顶层指令应该强制任何外部请求者首先进行身份验证。

相关内容