Segurança
Esta página descreve algumas "boas práticas" acerca da segurança na web e detalha as funcionalidades internas de segurança do Code Igniter.
Segurança URI
O Code Igniter é basicamente restritivo acerca dos caracteres aceitos em suas strings URI, de maneira a ajudar a minimizar a possibilidade que dados maliciosos possam ser passados para sua aplicação. URIs podem conter apenas o seguinte:
- Texto Alfanumérico
- Til: ~
- Ponto-final: .
- Dois pontos: :
- Underscore: _
- Hífen: -
GET, POST, e COOKIES
Dados via GET estão simplesmente desabilitados pelo Code Igniter uma vez que o sistema utiliza segmentos URI no lugar das tradicionais query strings URI (a menos que você habilite a opção de usá-las no seu arquivo de configuração). A array global GET não é setada pela classe Input durante a inicialização do sistema.
Register_globals
Durante a inicialização do sistemas, todas as variáveis globais não estão setadas, exceto as encontradas nas arrays $_POST e $_COOKIE. A rotina de configuração (set/unset) é efetivamente a mesma à register_globals = off.
magic_quotes_runtime
A diretiva magic_quotes_runtime está desligada durante a inicialização do sistema, por isso você não precisa remover as barras quando buscar dados do banco.
Boas Práticas
Antes de aceitar qualquer dado em sua aplicação, sejam dados POST vindos de um submit de um formulário, COOKIES, dados URI, dados XML_RPC, ou mesmo dados vindos da array SERVER, você é encorajados a praticar esta abordagem de 3 passos:
- Filtrar os dados supondos estarem infectados ou corrompidos.
- Validar os dados para assegurar que estão em conformidade aos corretos tipo, extensão, tamanho etc. (algumas vezes esta passo pode substituir o primeiro)
- Dê um Escape nos dados antes de submetê-los ao banco.
Filtragem XSS
O Code Igniter vem com um filtro Cross Site Scripting. Este filtro procura por técnicas comumente usadas para embutir código Javascript malicioso em seus dados, ou outros tipos de códigos que tentam sequestrar cookies ou causar outros danos. O filtro XSS é descrito aqui.
Valide os dados
O Code Igniter tem uma Classe de Validação que ajuda você a validar, filtrar e preparar seus dados.
Dê um Escape nos dados antes de submetê-los ao banco
Nunca insira informação em seu banco sem antes convertê-la via escape. Por favor, veja a seção que discorre sobre queries para mais informações.