você está errado nesta linha
order deny,allow
deve ser
order allow,deny
Veja a tabela em mod_authz_host
documentation
Basicamente, temos um Wiki que contém algumas informações confidenciais armazenadas nele - não o melhor que eu sei, mas meu antecessor o configurou. Eu quero ser capaz de solicitar acesso por senha de qualquer pessoa que não esteja na sub-rede da rede local. Aqueles na sub-rede local devem ser capazes de prosseguir sem digitar uma senha.
O seguinte .htaccess não parece funcionar mais, pois permite acesso não local sem exigir a senha:
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
E eu não posso descobrir o porquê. O WikkaWiki que ele deveria estar protegendo foi recentemente atualizado, o que destruiu o arquivo .htaccess, então eu restaurei o acima da memória / googling. Talvez eu esteja perdendo uma importante diretriz?
O completo .htaccess é o seguinte:
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>
você está errado nesta linha
order deny,allow
deve ser
order allow,deny
Veja a tabela em mod_authz_host
documentation
Por que você considera manter informações confidenciais no Wiki ruins? Se suas conexões HTTP forem executadas por TLS, não haverá danos.
Para o seu problema. Estamos usando o MediaWiki e acabei de tentar editar o LocalSettings.php:
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['read'] = false;
if ($_SERVER['REMOTE_ADDR']=='192.168.1.1') {
$wgGroupPermissions['*']['read'] = true;
$wgGroupPermissions['*']['edit'] = true;
}
... e funciona. O que este pedaço de código faz é que ele bloqueia a leitura / edição, se o usuário não estiver logado. Mas o IP do cliente é igual ao acima, ele pode editar e ler livremente o Wiki.
Talvez você possa hackear o PHP de WikkaWiki de maneira semelhante.
Para restringir o wiki apenas aos usuários que receberam credenciais de login, você pode editar o wikka.php na linha 405 (logo acima do $wikka->Run
) adicionando as seguintes linhas.
if('UserSettings' != $page and
!is_array($wakka->GetUser())) {
header('Location: /UserSettings');
exit;
}
Em seguida, na sua configuração do wikka, você também desejará impedir que novos registros sejam permitidos. Caso contrário, alguém poderia simplesmente registrar e ver suas informações importantes. Na linha 51 mude o seguinte de:
'allow_user_registration' => '1',
para:
'allow_user_registration' => '0',
Agora todos serão desafiados por uma senha para acessar qualquer página da wiki, exceto a página de login ('UserSettings'). Isso não é uma coisa ruim, porque é muito mais rápido navegar na wiki quando estiver logado de qualquer forma, já que ele não precisa fazer o nome de host aparecer!
Não é bem o que eu esperava, mas funciona mesmo assim.
Obrigado por todas as suas sugestões a todos.
Tente isto:
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
Você também deve considerar remover / comentar este bloco:
SetEnvIfNoCase Referer ".*($LIST_OF_ADULT_WORDS).*" BadReferrer
order deny,allow
deny from env=BadReferrer
já que as diretivas na parte superior devem obrigar qualquer solicitante externo a autenticar primeiro.