Desenvolvimento Web - Simples dicas de segurança

Todos sabem o quanto a segurança é importante no desenvolvimento de soluções para Web, porém, cada programador tem seu próprio "pacote de segurança" e adapta-o às suas necessidades. Neste artigo, pretendo levantar um debate sobre as medidas de segurança para servidores Web, iniciando com minhas dicas e engordando o artigo com dicas dos usuários do VOL.

[ Hits: 8.427 ]

Por: Djair Dutra C. Jr. em 09/07/2012


Simples dicas de segurança para quem vai desenvolver para Web



Ocultando as mensagens de erro do PHP

Quando seu código tem algum erro no PHP, o navegador lhe retorna este erro com riqueza detalhes, inclusive como número da linha, o que lhe ajuda muito a resolver o problema (principalmente com includes).

O lado ruim é que estas informações são úteis apenas quando o site está em desenvolvimento, porque quando está em produção, as informações são desnecessárias para quem acessa o site e podem dar alguma dica para possíveis invasores.

Para resolver isso, existe uma opção no arquivo php.ini chamada "display_errors". Quando esta opção está definida com o valor On, significa que cada erro de PHP será mostrado na tela. Para que os erros não apareçam, use a opção Off.

Ocultando visualização de arquivos

No desenvolvimento de sites com upload de arquivos, sejam eles PDF, JPG, DOC, etc, às vezes é necessário "camuflar" a pasta onde os arquivos se encontram para que os mecanismos de busca não listem estes arquivos desordenadamente, ou para que o usuário, digitando o caminho direto da pasta, não tenha uma listagem completa destes arquivos. Isso chama-se indexação.

Dentro do arquivo de configuração do Apache, apache.conf, você pode restringir os tipos de arquivos que serão indexados com a opção "IndexIgnore".

Para servidores que trabalham com vários sites no mesmo servidor, a regra pode ser aplicada a apenas um dos domínios, conforme no exemplo abaixo:

<VirtualHost *:80>
     DocumentRoot  "/var/www/meusite"
     ServerName  www.meusite.com
     ServerAlias  meusite.com
     IndexIgnore *.jpg *.gif *.bmp *.pdf *.doc
</VirtualHost>


Ocultando a visualização de diretórios

Da mesma maneira que existe como restringir a visualização de arquivos, pode-se restringir a listagem de diretórios, através da opção abaixo, usada no mesmo local do exemplo anterior: Options -Indexes

Proteger com senha a pasta com arquivos administrativos

Esta é mais uma dica do que um passo a passo. Se o seu site possui páginas administrativas, na qual apenas você deve acessar, uma dica importante é restringir o acesso a esta página por meio de senha.

Porém, é importante lembrar que existem outras maneiras bem melhores para autenticação de usuário por meio de login e senha, mas tais alternativas demandam mais trabalho e precisão. Esta dica aqui fica para uma solução rápida.

Para ver como proteger suas pastas, entre em:

register_globals (On|Off)

Esta diretiva do PHP, por padrão, vem configurada como Off no php.ini, porque subtende-se que hoje em dia nenhum programador decente precisa deste recurso ativado. Se você administra sites mais antigos (bem antigos) ou um servidor que hospeda várias páginas, já deve ter se deparado com a necessidade de ativar esta diretiva para que um site não parasse de funcionar.

Porém, ativando no "php.ini", esta alteração valerá para todos os sites hospedados no servidor, e isso é perigoso.

É necessário, então, ativar esta diretiva somente nos sites que necessitam deste recurso, e isto deve ser feito dentro do apache.conf.

Dentro das diretivas que definem um domínio virtual no Apache, você pode definir opções relativas ao php.ini. Veja o exemplo de como habilitar o "register_globals" só para um dos domínios:

<VirtualHost *:80>
     DocumentRoot  "/var/www/meusite"
     ServerName  www.meusite.com
     ServerAlias meusite.com
     php_value register_globals  1
</VirtualHost>


Informações importantes em arquivos abertos

Não guardar informações de login ou senha em arquivos com extensões .inc, .doc, .txt ou outras que não sejam interpretadas pelo PHP, é uma dica simples e óbvia, mas muita gente esquece e acaba deixando brechas no servidor.

Ao desenvolver um site é comum usar arquivos para guardar dicas, blocos de código, logs de erro, etc. Porém, tais informações contidas no arquivo são facilmente capturadas se alguém tentar fazer um download direto do arquivo via URL.

Certa vez encontrei um site com um arquivo denominado "autenticacao.txt" no qual estava a maioria dos códigos de autenticação que o cara fez no site, inclusive com a senha e login, ou seja, ele copiava dicas da Internet, transferia dentro do arquivo .txt e depois aplicava os códigos às páginas PHP.

Considerações finais

É óbvio que cada desenvolvedor tem suas próprias medidas de segurança e falar neste assunto sempre vai gerar muitos comentários. Para não esticar muito o artigo e torná-lo chato, resolvi postar aqui apenas algumas dicas simples, de fácil e rápida implementação, mas JAMAIS tome-as como únicas, ou como as mais importantes.

* Elas são complementares!

Espero que este artigo possa abrir discussão para que outras pessoas enriqueçam-no com outras informações e mais dicas úteis.

   

Páginas do artigo
   1. Simples dicas de segurança para quem vai desenvolver para Web
Outros artigos deste autor

Conhecimento x Soberba

Personalizando o Ubuntu 9.04 com Screenlets

Solução para provedores - Receber aviso no celular quando ocorrer perda de pacote, hosts parados ou pacotes duplicados

Controle de clientes e acessos no Squid

Estamos mais "INGNORANTES"?

Leitura recomendada

Resenha do livro: Praticando a Segurança da Informação

Servidor para centralização de logs - Fedora 7

Vault: SSH com OneTimePassword

Quebrando a criptografia RSA

Aquisição Estática de Dados em Computação Forense

  
Comentários
[1] Comentário enviado por removido em 09/07/2012 - 12:18h

Parece que adivinhei.

Estava procurando por texto semelhante.

:-)

[2] Comentário enviado por toledocosta em 11/07/2012 - 12:14h

Muito bom. Estava buscando algo assim.. Parabéns pelo artigo..


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts