leitura de
Encontrou um problema no conteúdo? Por favor, deixe seu comentário!

Pouca gente realmente se preocupa com a criação de sistemas seguros… São várias as providências que podem (e devem) ser tomadas para se criar um sistema um pouco mais seguro que os demais.

Vou listar aqui algumas medidas sobre as quais recomendo que você pesquise mais sobre e procure realizar/implementar no seu site… Vou falar sobre vários tipos e níveis de proteção, então não se assuste se você vir algo que nunca ouviu falar:

  1. Renomeie sua tabela de usuários Não use nomes comuns como 'users', 'user', 'usuarios'... Isso dificulta o acesso aos usuários e senhas caso consigam encontrar uma brecha de entrada pra SQL Injection
  2. Sempre valide os parâmetros passados por $_GET Se você passa números de produtos, números de páginas ou qualquer outro tipo de dado pela url, é bom validá-lo antes de usá-lo. Por exemplo: se você passa o ID de um produto por url (produtos.php?id=12), na hora de pegar esse valor, faça - no mínimo - isso: $id = (int)$_GET['id']; Com isso você transforma qualquer valor que esteja na URL em inteiro. Evitando assim vários tipos de ataque. Uma boa recomendação sobre esse ponto é o [Instalando o PHPIDS no seu site](/instalando-o-phpids-no-seu-site) 
  3. Utilize CAPTCHAs CAPTCHAs são aquelas imagens de verificação que você precisa digitar um código (geralmente alfa-numérico) pra poder enviar um formulário de cadastro ou algo parecido. Coloque esse recurso em qualquer formulário público: envio de comentário ou cadastros por exemplo. Elas evitam, na maioria da vezes, que o formulário seja usado e enviado por robôs/scripts automáticos. Uma boa recomendação é o [reCAPTCHA](http://recaptcha.net/). 
  4. Não oculte os erros do PHP, manipule-os As mensagens de erros do PHP podem colocar uma corda no seu pescoço, mas evite ocultá-los completamente. Crie um manipulador de erros (error handler) que envie e-mails para o administrador informando dados do erro como arquivo, linha, hora, código, ip, visitante... E pro visitante exiba apenas uma mensagem do tipo "Ocorreu um erro. O administrador do site foi informado". Leia mais: [Segurança – Manipulando erros no PHP](/seguranca-manipulando-erros-no-php) 
  5. Se for usar sistemas prontos de terceiros, use bancos de dados e usuários diferentes Cada sistema tem suas vulnerabilidades, e quanto mais conhecido o sistema for, mais vulnerabilidades conhecidas eles pondem ter. Se você usar bancos de dados separados você evitar um ataque que use as falhas desses sistemas como ponte pra destruir o banco de dados do seu site. 
  6. Utilize senhas e usuários do Apache/IIS Se você não considera o gerenciador/administrador do seu site 200% seguro, crie usuários do Apache ou IIS e bloqueie o acesso à pasta do administrador. A tela de login não é bonita... mas quem já viu colete a prova de balas e/ou grades bonitas? 
  7. Banindo IPs por um bem maior Se for preciso banir um usuário insistente que sempre usa um determinado IP, faça-o. Impeça o acesso total dele. É melhor perder um visitante/IP do que meses ou anos de trabalho. Você pode usar vários recursos pra fazer isso: [header()](http://php.net/manual/en/function.header.php) do PHP, .htaccess do Apache dentre outros. Leia mais: [Bloqueando visitantes pelo IP com MySQL e PHP](/bloqueando-visitantes-pelo-ip-com-mysql-e-php) 
  8. Falhas de Login Você considera normal um usuário errar o proprio login mais de cinco vezes? Sim? Então você está pedindo pra ter problemas... Impeça o acesso ao formulário de login por, no mínimo, 10 minutos e não esqueça de avisar um administrador do site sobre as tentativas falhas consecutivas. 
  9. LOGs, muitos LOGs Grave LOGs de tudo o que você puder... Cada edição, cada cadastro, cada login... Eles podem ocupar um espaço indesejado, mas são uma ótima ferramenta para rastrear a causa de problemas. 
  10. Sessões As sessões são um ótimo recurso, sempre necessárias. Mas é preciso ter cuidado com elas... Modifique o ID da sessão a cada carregamento de página, faça verificações de IP e compare com Cookies salvos. Se algo ficar diferente do esperado, ou algum dado não bater, expulse o usuário imediatamente.Leia mais: [Aprendendo a usar sessões no PHP](/aprendendo-a-usar-sessoes-no-php) 
  11. Mantenha seu software atualizado Atualizações são, além de melhorias nas funcionalidades e na performance do produto, melhorias na segurança de todo um projeto. Se você usa algum tipo de pacote/software pronto, fornecido por terceiros, mantenha-o SEMPRE atualizado, custe o trabalho que custar. 
  12. Oculte a listagem de pastas e arquivos do Apache Sabe quando você acessa uma pasta do seu servidor, que não tem nenhum arquivo index, e você vê aquela listagem feia, mostrando todas as pastas e arquivos daquele diretório? Faça com que isso acabe o mais rápido possível. É só colocar um Options -Indexes no .htaccess do root do seu site. 

Mais pra frente irei postar outras partes sobre esse ‘guia’… Mas tomem as devidas providências com os seus sites, segurança nunca é o suficiente e nunca vai ser demais.

Abraços!

Thiago Belem / Blog

Thiago Belem


Publicado

Thiago Belem / Blog

Thiago Belem / Blog

Artigos e tutoriais sobre desenvolvimento WEB

Continue lendo