Segurança no CodeIgniter

27 de março de 2012, em Dicas, por

Quando se está preparando o ambiente de desenvolvimento para CodeIgniter, é importante levar em consideração uma questão primordial: segurança. Durante o desenvolvimento de um site ou sistema, existem muitas ações/verificações possíveis de se fazer a fim de aumentar a segurança da aplicação. Felizmente, o CI já vem, por padrão, com uma série de opções e configurações que ajudam bastante, neste sentido, através de sua classe de segurança, a Security Class.

Configurações de segurança padrão

Segurança de URI

O CodeIgniter é bastante restritivo em relação aos caracteres permitidos em URIs. Isso é para minimizar a possibilidade de que dados maliciosos possam ser passados ​​para a aplicação. Por padrão, URIs podem conter apenas os seguintes caracteres:

  • Texto alfanumérico
  • Til: ~
  • Porcento: %
  • Ponto: .
  • Dois pontos: :
  • Underscore: _
  • Traço/Menos: -

Apesar de ser desaconselhado, é possível especificar mais caracteres – ou suprimir algum(ns) desse(s) – no arquivo de configuração, /application/config/config.php.

Register_globals e magic_quotes_runtime

Durante a inicialização do sistema, todas as variáveis ​​globais não estão setadas, exceto as encontradas em $_GET, $_POST e $_COOKIE. A rotina de desativação é a mesma usada na diretiva “register_globals = off”.

A diretiva “magic_quotes_runtime” está desligada durante a inicialização do framework para que não seja preciso remover barras quando em consultas em bancos de dados.

Isso o CodeIgniter já faz por padrão, então, não precisa se preocupar com nada, somente fique sabendo. :-)

error_reporting

Em ambientes de produção, normalmente é desejável desativar o reporte de erros do PHP, definindo o sinalizador “error_reporting” para “0″. Isso desativa erros nativos do PHP que está sendo processado, que pode, potencialmente, conter informações confidenciais. Mas, em ambientes de desenvolvimento e testes, é importante que esses erros apareçam.

Mais sobre os diferentes ambientes e como gerenciar configurações e variáveis facilmente, leia o artigo que explica como trabalhar com diversos ambientes no CodeIgniter.

Melhores práticas de segurança para CodeIgniter

Como “regras gerais”, existem algumas práticas que podem ser levadas em consideração no momento de desenvolver aplicações com CodeIgniter. Na verdade, são regras de segurança até mesmo para quando não se está usando o CI!

Antes de aceitar qualquer dado em sua aplicação, sejam dados POST vindos de formulários, COOKIES, dados de URIs, dados XML-RPC ou, até, informações de SERVER, é possível tomar 3 precauções em nome da segurança:

  1. Filtrar dados.
  2. Validar os dados para assegurar sua conformidade com o tipo correto, comprimento, tamanho, etc (algumas vezes, isso pode substituir o item anterior)
  3. Tratar dados antes de submetê-los ao banco de dados

Para ajudar nessa trinca de segurança, o próprio CodeIgniter já vem com alguns recursos para ajudar.

Filtro XSS

Cross-site scripting (ou XSS) é um tipo de ataque perigoso, mas, felizmente, o CodeIgniter já apresenta meios de proteger a aplicação através de uma de sua Security Class.

Validação de dados

CodeIgniter tem uma Classe de validação de formulário que serve para validar, filtrar e preparar dados.

Escapar dados antes de terem contato com o Banco de Dados

Nunca insira informação em seu banco de dados sem escape! Existe uma seção específica para isso no manual oficial do CI.

Conclusão sobre Segurança no CodeIgniter

Não somente quando se usa CI, mas em todo projeto web, levar a segurança em consideração é um dos passos mais importantes para garantir que seu site ou aplicação tenha qualidade.

Este artigo mostrou somente em linhas gerais como o CodeIgniter, em seu status de melhor framework PHP, já tem, por default, diversos recursos e abordagens para tratar essa questão de segurança.

Serão lançados, aqui no blog, artigos específicos sobre cada um dos pontos citados. Assine o feed para não perder a leitura e garantir que a segurança de seus aplicativos em CodeIgniter esteja em dia!

3 comentários em "Segurança no CodeIgniter"

gravatar

Marcelo Ratton  em 27 de março de 2012

Muito bom e passa fácil pelos testes do SiteSeguro sem precisar de malabarismo nenhum só seguindo os padrões de segurança do próprio CI. #recomendo

gravatar

Diego Walisson  em 27 de março de 2012

"SiteSeguro"? Existe um local específico pra fazer testes?

gravatar

Tárcio Zemel  em 28 de março de 2012

Eu já escrevi um artigo mostrando algumas ferramentas para testes de segurança em sites – Ferramentas gratuitas para testes de segurança em sites – mas, realmente, não conheço esse "SiteSeguro".

Conte-nos, mais, Marcelo! :-)

    Comente!