Pergunta

Primeiro, eu percebo que não existe tal coisa como uma solução perfeitamente seguro (e mesmo se houvesse, sua usabilidade seria porcaria).

Dito isto, como você proteger seu banco de dados MySQL sejam comprometidas por alguém baixando o seu código e escolhendo através dele? Baseado na minha experiência com PHP, parece obrigatório para armazená-lo dentro do código em algum ponto ou outro, que envia até bandeiras para mim. Posso ver onde refatoração a variável Ofuscação, constante e nomes de funções (definidas pelo usuário) pode ser benéfico, mas no final ele ainda seria possível traçar com ele e encontrar o arquivo com as informações de login DB.

Idéias?

Foi útil?

Solução

Normalmente, as informações de autenticação MySQL é armazenado em um arquivo de configuração externo. O utilizador MySQL utilizado pela aplicação baseada na Web é dada permissões limitadas, tais como SELECT, INSERT, UPDATE, DELETE e não é dado como permissões ALTER, DROP, DELETE. Se você deseja liberar o código para o público que você não incluir o seu arquivo de configuração privada, mas a / instrução / mínima arquivo de configuração genérico em vez.

Armazenar a informação MySQL auth em um formato criptografado é um pouco bobo, como você precisa para armazenar a chave / unencryption privada localmente também. Se é trivial para um usuário não autenticado para ver os arquivos de código ou de configuração no seu servidor, o problema não é o código - é a sua configuração e configuração do servidor.

Outras dicas

A segurança pode ser assistido por armazenar qualquer informação codificada (na configuração arquivos ou scripts) fora do web-raiz, e por suprimir (no código de produção) mensagens de erro. Dessa forma, esperamos que os usuários não vão ver que userValidate() expects exactly three paramaters.

pygorex1 está correto, você deve usar arquivos de configuração externos onde os meios "externos" um arquivo fora da raiz web. Assim, mesmo se não haveria um erro de configuração em seu servidor web que permite que o usuário veja o seu código-fonte, que não seria capaz de ver as credenciais de banco de dados, uma vez que não pode ser acessado diretamente através do browser.

pygorex1 também é direito sobre as permissões de usuário. Limitar o acesso do usuário mysql para um mínimo é sempre preferível. Mesmo que um hacker teria a sua senha mysql e nome de usuário, ele não seria capaz de causar danos significativos se as permissões de usuário são apenas limitadas ao exemplo SELECT consultas. Uma coisa que ele esqueceu de mencionar foi que o usuário MySQL só devem ser autorizados a entrar a partir de localhost (ou do que quer hospedar o aplicativo web está ligado), nunca use curingas nos anfitriões permitidos.

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