Manual:Securing database passwords/pt-br

LocalSettings.php
O arquivo  contém IDs de usuário do banco de dados MySQL e senhas. Manter estas senhas no LocalSettings.php é arriscado, pois arquivos php podem ser servidos como texto simples sob várias condições diferentes que revelam sua conta de administrador wiki para o mundo. Se você quiser manter sua conta de administrador em segredo remova-as do LocalSettings.php No entanto, muitos usuários de Unix e Linux podem simplesmente proteger o arquivo LocalSettings.php apenas ajustando suas permissões com o chmod 700 como recomendado no LocalSettings.php. Esses usuários não precisam ler esta página.

O arquivo LocalSettings.php pode ser visualizado como texto simples se:
 * o PHP estiver desabilitado no servidor
 * o próprio PHP falhar
 * você tiver o search.pl (um script de busca cgi comum) em qualquer lugar nesse domínio. Veja a descrição de como explorar.

Verifique se o apache pode ter acesso a esse arquivo, e que apenas os administradores tenham acesso a esse arquivo quando acessarem o servidor.

Mantenha senhas MySQL fora do webroot
Você nunca deve colocar suas senhas do MySQL em um arquivo de texto que está dentro do webroot. Você pode evitar isso, fazendo o seguinte:
 * 1) Crie um diretório fora do seu webroot. Por exemplo, se o site está localizado em "/htdocs/www-wiki", em seguida, crie um diretório chamado "external_includes" fora do seu webroot:
 * 2) mkdir /external_includes
 * 3) Crie um arquivo no diretório que você acabou de fazer chamado algo como "mysql_pw.php" e coloque uma variável em uma linha separada para cada um, ou seja, seu nome de usuário MySQL, senha, nome do host e nome do banco de dados, cada variável definida para os valores reais. Por exemplo, usando o nano como editor:
 * 4) nano /external_includes/mysql_pw.php
 * 5) Digite as seguintes linhas usando os valores reais, é claro, no lugar dos itens entre colchetes "mysql_options":
 * 1) Tome cuidado para não deixar nenhum espaço em branco (linhas em branco) após o texto.
 * 2) Salvar e fechar o arquivo. No nano, faça deste modo: Ctrl+O e Ctrl+X

Verifique com sua distribuição para qual usuário do servidor web se destina (isso varia, exemplos incluem "apache", "ninguém", "httpd"). Em seguida, defina as permissões para o arquivo de senhas da seguinte forma: chgrp apache mysql_pw.php chmod 640 (remove os direitos de acesso de outros usuários e direitos de escrita do servidor web) (provavelmente repita com o g-rxw ... para o LocalSettings.php ) certifique-se que u tem r (ou chmod 400 LocalSettings.php)

$wgDBserver $wgDBname $wgDBuser $wgDBpassword
 * Edite seu arquivo LocalSettings.php e adicione a seguinte linha no início do arquivo:
 * Agora remova essas variáveis do arquivo LocalSettings.php:

Dessa forma, se alguém conseguir acessar e exibir o arquivo LocalSettings.php, todos eles vão ver apenas algumas configurações ao invés da senha, nome de usuário, etc para o seu banco de dados MySQL e o arquivo real, contendo informações que estão inacessíveis para o servidor web. Você ainda precisa ter certeza de que o arquivo LocalSettings.php só é somente leitura para o usuário do Apache como descrito acima.

Se você não conseguir criar arquivos fora do seu webroot, você ainda pode conseguir alguma proteção, passando pelo processo acima e usando um nome como ".htdbpasswd" dentro do seu webroot em vez de "mysql_pw.php", como a maioria dos servidores web são configurados para negar o acesso a todos os arquivos começando com .ht*

Problemas de segurança pela falha do PHP
Se o seu PHP falhar, ele servirá o arquivo LocalSettings.php como um arquivo comum, dando ao mundo a senha do banco de dados do seu wiki!

Correção
(pode falhar em outro lugar!)

Substitua sapi_apache2.c por mod_php4.c para o Apache 1.3

Substitua sapi_apache2.c por mod_php5.c para o Apache 2

Isso não vai funcionar em servidores web que utilizam CGI ou FCGI para scripts PHP de servidor.