O armazenamento de variáveis ​​de configuração em um arquivo XML em um site PHP está muito arriscado?

StackOverflow https://stackoverflow.com/questions/605308

  •  03-07-2019
  •  | 
  •  

Pergunta

Percebi que o Magento armazena detalhes de conexão MySQL em um arquivo XML que não está protegido acima do docroot. Isso parece ... bem perigoso.

XML parece ser uma maneira útil de armazenar dados de configuração, exceto por uma coisa, digitando http://www.domain.com.au/library/config.xml Vou mostrar ao mundo seus detalhes particulares!

Fui em frente e usei um arquivo XML e adicionei isso ao meu arquivo .htaccess.

<Files ~ "\.xml$"> // regex files that end with xml extension
Order allow,deny 
Deny from all // don't show them
</Files>

Agora eu foi Feliz com isso, agora não tenho muita certeza. E se o arquivo .htaccess for acidentalmente excluído/corrompido (isso acontece além do erro humano) e se um dia eu quiser colocar o aplicativo em um servidor não apache ... todos os servidores têm o equivalente a bloquear arquivos XML e Se o fizerem, eles podem ser alterados em um nível de pasta como o .htaccess pode (e não apenas um arquivo httpd.conf).

Minha pergunta é ... A conveniência do XML (fácil de atualizar, os designers que precisam mexer não se sentirão tão intimidados) superam os problemas em potencial (expondo dados privados)?

Foi útil?

Solução

Pessoalmente, eu apenas armazenaria informações de arquivo de configuração em um formato que não está em um formato ou local diretamente acessível. Então, eu usaria o formato XML acima do docroot ou o formato php $ config ['varname'] = 'value'. O método posterior apenas renderizaria uma página branca em branco se chamado diretamente (desde que seja todo PHP e não contive HTML e não ecoe).

Galeria, Vbulletin e Joomla usam o segundo método que mencionei. Sei que já mencionei esses projetos antes em outras perguntas relacionadas ao PHP, mas parece ser um método amplamente utilizado e aceito entre os projetos.

Outras dicas

Resposta curta, não, não é. Mas uma pergunta melhor seria. Se não for armazenado em um arquivo de configuração, onde você o guardaria?

Concordo inteiramente com o Inventix sobre isso, mas também ofereço uma terceira opção que deve ser combinada com qualquer um

Nomeie a informação de configuração de armazenamento de arquivos

.htanything

Como o servidor amplo, todos os arquivos iniciantes .ht são ilegíveis por usuários externos {É por isso que o htaccess é sempre .htaccess}

A personalidades eu armazeno apenas arquivos de configuração inclui e bibliotecas de funções fora da raiz do documento, mas entendi que algum connot sempre usa a convenção .htnaming neles também caso o $ inclui a dobra deve ser movido dentro da árvore de documentos por alguém que usa o software em esse servidor

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top