gototopgototop
PHP Security - Joomla e segurança (Artigo 9) PDF Imprimir E-mail
configurando o phpA segurança do PHP é um dos pontos mais importantes na configuração do servidor, pois a linguagem é a mais vulnerável a ataques e tem um grande número de configurações administrativas que precisam ser bem configuradas, pois podem abrir buracos na segurança. Se um hacker conseguir executar um código de script fora das limitações do servidor, existe um grande potencial de chance do vilão obter o controle completo do sistema.

O primeiro passo para minimizar o potencial de perigo para o seu sistema é assegurar que não existem arquivos no seu servidor que possa ser chamados pela função phpinfo (). Embora esta função seja essencial para examinar o seu sistema e determinar as definições de configuração, ela pode  proporcionar ao hacker uma janela com a lista  completa das configurações do seu sistema PHP. Essa configuração pode dar pistas exatas de como, exatamente, violar o seu sistema.

Depois de ter a certeza que o seu servidor não expõe as configurações do PHP propriamente dito, há uma série de diretivas do PHP que podem blindar o servidor para assegurar que não é um alvo promissor para um hacker. Embora um servidor com suporte a Joomla possa funcionar corretamente sem estas precauções de segurança, isto irá aumentar potencialmente a segurança e evitar problemas futuros garantindo a você que o seu servidor está bem configurado para operar com o Joomla.


Joomla e segurança - dicas importantes
  • Troque o usuário padrão do Joomla (admin), por outro qualquer e atribua-lhe uma senha forte;
  • Evite instalar extensões pouco conhecidas e utilizadas;
  • Diretórios devem possuir permissão (0755) e arquivos (0644). Caso não entenda o que quero dizer, contrate um profissional para desenvolver seu projeto;
  • Desabilite o relatório de erros pois eles pesam o seu website e mostram aos possíveis invasores, as falhas de segurança do seu website. Para desabilitar o relatório basta seguir a seguinte sequência: Configurações Globais - Sistema - Relatório de Erros -> nenhum
  • Renomeie e mova o arquivo configuration.php para um novo diretório.

    Exemplo:

    1. Renomeie o arquivo configuration.php que está na raiz do website, para config.conf
    2. Crie um diretório config e mova o arquivo para este diretório
    3. Com o bloco de notas aberto, digite o script abaixo e salve, na raiz do seu website, como configuration.php
      script php novo configig
  • Faça backup regularmente de seu website. Existem excelentes extensões com esta finalidade
  • Mantenha suas extensões atualizadas
  • Mantenha sua versão do Joomla atualizada
  • Mude o prefixo das tabelas do Joomla

O CMS Joomla é um aplicativo seguro, porém, o provedor de hospedagem e o profissional que irá desenvolver o projeto, são fatores externos que podem contribuir com o comprometimento ou melhoria da sua segurança.


Na versão 6 do PHP, existem algumas características comuns (register globals, magic quotes e safe mode) que foram eliminadas. No caso do magic quotes (consulte o artigo sobre "SQL Injection"), a remoção do recurso, obrigará aos programadores prestarem mais atenção em seus códigos.

PHP Safe Mode

Quando safe mode é ativado em um servidor web, os scripts de execução só podem  acessar os arquivos dentro do  próprio diretório do website. Isso evita que os "hackers" executem scripts em um diretório com permissão de leitura, utilizando um sistema compartilhado, a partir de um diretório que não lhes pertence. O modo de segurança cria limites de prazo para execução de script, utilização de memória, e o acesso a determinadas funções de sistema (como o exec (), unlink () e copy ()). É bom ter modo seguro ligado em muitas situações, apesar de alguns programas e componentes não funcionarem corretamente se o safe mode estiver ativado.

O modo de segurança é ativado em HOSTS que utilizam servidores compartilhados. Você pode verificar se o mesmo está ligado executando um script phpinfo () e procurando em função da configuração -> Diretivas fundamentais par o Php a situação do safe_mode. Você pode alterar a configuração editando o seu arquivo de configuração do php, desde que tenha acesso ao mesmo.

Se você estiver executando o PHP em um servidor Microsoft IIS, você não precisa usar o safe mode, uma vez que cada host virtual pode ser configurado para ser executado a partir de uma conta de usuário. Enquanto os privilégios das contas de usuário forem definidas corretamente, não há necessidade de proibir um acesso à conta, pois não será possível.

O safe mode será removido da versão 6 do PHO e posteriores. As restrições alcançadas com safe mode passam um falsa sensação de segurança. Desde a sua implementação inicial, o safe mode foi um paliativo até que os servidores da web (local em que o problema deveria ser tratado) conseguissem atingir um nível de sofisticação em que a diretiva deixaria de ser necessária. A maioria dos Servidores alcançaram esse nível há algum tempo.
PHP doc_root

A directiva doc_root aceita uma string especifica para o diretório raiz de execução para scripts PHP. Se o safe mode estiver ligado, a execução de scripts será autorizada fora do referido diretório. O diretório deverá ser definido no arquivo php.ini como este exemplo:

doc_root = "C:\Program Files\Apache Software Foundation \ Apache2.2"

PHP disable_functions

Com o safe mode desligado, há uma série de outras funções que podem ser utilizados para garantir a melhoria da segurança no PHP. Por exemplo, a diretiva disable_functions pode ser configurado para desativar funções específicas que possam ser exploradas por um hacker. No arquivo de configuração do PHP, você poderá inserir a seguinte diretiva que irá desativar as funções listadas sem afetar a operação do joomla:

disable_functions = file, fopen, popen, unlink, system, passthru, exec, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec

Em uma implantação no servidor, você pode considerar desativar essas funções além de desativar a função phpinfo. Dessa forma, se um arquivo que instancie a função for localizado por um hacker, não fornecerá a ele nenhuma informação, impedindo sua exploração.

Antes de fazer este tipo de mudança na configuração do seu PHP, certifique-se de saber exatamente o que está fazendo. Caso contrário, é provável que desabilite uma função que é usada por uma extensão, e assim irá limitar a funcionalidade de seu Web site.
PHP disable_classes

Como o disable_functions, o diretório disable_classes aceita uma lista de itens que podem ser disabilitados, separados por uma vírgula. Esta função irá desativar algumas especificações da orientação a objeto em execução no PHP. Embora esta diretiva tenha uma utilidade limitada no presente, no futuro, quando as classes de frameworks (incluindo o framework joomla) tornarem-se mais extensas e apresentarem riscos de segurança, esta configuração irá revelar-se muito útil.

para desativar a classe Directory, incluir esta directiva no seu arquivo php.ini: disable_classes = Directory

PHP display_errors

Uma diretiva importante e que deve estar ativada é a display_errors. Esta diretiva permite que, quaisquer erros ou avisos que podem ocorrer durante a execução do comando echo do PHP, sejam "printadas" no browser, juntamente com o arquivo e o número da linha onde ocorreu o erro. Geralmente você poderá resolver esses avisos colocando um @ no início da linha afetada.  Você pode ativar a diretiva display_errors no arquivo php.ini com esta directiva:

display_errors = On

Durante o desenvolvimento, você vai querer todos os erros exibidos no browser para permitir uma rápida resolução, e todos os avisos exibidos porque eles tendem a ser ignorados e são exibidos apenas no log de erro. Com esta configuração desativada, as mensagens do sistema não serão perdidas. Quer seja ativado ou desativado, os erros e avisos são escritos no arquivo error.log do servidor Apache e estão disponíveis no diretório  \ logs. Por padrão a diretiva display_errors está habilitada.

Certifique-se de definir esta diretiva para desabilitada em um servidor de produção. Se for deixada ligada, qualquer erro pode fornecer uma boa variedade de informações do seu servidor web a um hacker, incluindo nomes de arquivos, caminhos  de diretório, variáveis e definições de permissão. Estas podem ser exploradas para proporcionar o acesso não autorizado ou dano para o seu web site.

PHP expose_php

O ServerTokens do Servidor web Apache, mencionado anteriormente em outro artigo, envia informações com cada pedido de página. A diretiva expose_PHP irá acrescentar informações sobre o servidor de PHP para o servidor com as informações devolvidas durante uma solicitação de página. Por padrão, esta opção está habilitada, mas para melhor segurança, você deve desativá-lo em seu servidor de produção.

Para desativar o fornecimento de informações do seu servidor PHP, defina esta diretiva no seu arquivo php.ini da seguinte forma:

expose_php = off

Até o próximo artigo.
Artigo traduzido e adaptado por Júlio Coutinho. O original, está publicado no capítulo 14 do livro Professional Joomla - Programador para Programador, de Dan Rahmel.
  divulgue o artigo no orkut
Voltar

Your are currently browsing this site with Internet Explorer 6 (IE6).

Your current web browser must be updated to version 7 of Internet Explorer (IE7) to take advantage of all of template's capabilities.

Why should I upgrade to Internet Explorer 7? Microsoft has redesigned Internet Explorer from the ground up, with better security, new capabilities, and a whole new interface. Many changes resulted from the feedback of millions of users who tested prerelease versions of the new browser. The most compelling reason to upgrade is the improved security. The Internet of today is not the Internet of five years ago. There are dangers that simply didn't exist back in 2001, when Internet Explorer 6 was released to the world. Internet Explorer 7 makes surfing the web fundamentally safer by offering greater protection against viruses, spyware, and other online risks.

Get free downloads for Internet Explorer 7, including recommended updates as they become available. To download Internet Explorer 7 in the language of your choice, please visit the Internet Explorer 7 worldwide page.