В основном у нас есть 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>
ты ошибаешься в этой строке
order deny,allow
должно быть
order allow,deny
Посмотрите на стол в mod_authz_host
документация
Почему вы считаете плохим хранить конфиденциальную информацию в 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-адрес клиента совпадает с указанным выше, он может свободно редактировать и читать Wiki.
Может быть, вы сможете взломать PHP WikkaWiki аналогичным образом.
Попробуй это:
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
поскольку директивы наверху должны заставлять любого внешнего запрашивающего пройти аутентификацию первым.
Чтобы ограничить вики только пользователями, которым были предоставлены учетные данные, вы можете отредактировать wikka.php в строке 405 (прямо над $wikka->Run
), добавив следующие строки.
if('UserSettings' != $page and
!is_array($wakka->GetUser())) {
header('Location: /UserSettings');
exit;
}
Затем в конфигурации викки вы также захотите запретить прохождение новых регистраций. В противном случае кто-то мог просто зарегистрироваться и увидеть вашу важную информацию. В строке 51 измените следующее:
'allow_user_registration' => '1',
кому:
'allow_user_registration' => '0',
Теперь каждому будет предложено ввести пароль для доступа к любой вики-странице, кроме страницы входа (UserSettings). Это неплохо, потому что в любом случае гораздо быстрее просматривать вики, когда вы вошли в систему, так как не нужно искать имя хоста!
Не совсем то, на что я надеялся, но тем не менее он работает.
Спасибо за все ваши предложения.