Segurança XSS CSRF

Segurança contra ataques XSS e CSRF no CodeIgniter

Segurança é fundamental em qualquer tipo de sistema, seja web, desktop ou mobile. Não importa o framework utilizado, o ambiente de desenvolvimento, o tipo de servidor; sempre é preciso cuidar da segurança dos sistemas que você desenvolve.

Nesse artigo vou falar sobre algumas boas práticas de segurança no CodeIgniter. Apresentarei alguns recursos nativos para ajudar no aumento da segurança da sua aplicação.

Segurança contra ataque XSS

Cross-site scripting (XSS) é um tipo de vulnerabilidade do sistema de segurança de um computador, encontrado normalmente em aplicações web que ativam ataques maliciosos ao injetarem script client-side dentro das páginas web vistas por outros usuários. Um script de exploração de vulnerabilidade pode ser usado pelos atacantes para escapar aos controles de acesso que usam a política de mesma origem. (Wikipedia)

O CodeIgniter possui um método dentro da classe Secuyrity chamado xss_clean, e esse método deve ser utilizado para tratamento dos dados contra XSS. Até umas versões atrás havia uma variável de configuração no arquivo application/config/config.php chamada $config[‘global_xss_filtering’], onde era possível definir se o filtro de XSS seria aplicado globalmente, a todas as requisições. Atualmente essa variável foi marcada como DEPRECATEDe será removida em breve, pois o filtro é aplicado automaticamente em todas as requisições GET, POST ou COOKIE.

Você também pode forçar a execução manual do filtro, usando o seguinte código:

$this->security->xss_clean($dados);

Ele irá retornar os dados passados como parâmetro devidamente tratados, evitando assim um ataque XSS.

Esse método xss_clean aceita um segundo parâmetro, que é um booleano, e esse determina se o valor passado no primeiro parâmetro é uma imagem ou não. Imagens também podem ser fontes potenciais de ataque XSS. Então sempre que for fazer um upload de imagem, utilize esse filtro.

Veja um exemplo de aplicação a seguir:

if($this->security->xss_clean($arquivo, TRUE) === FALSE)
{
   //Arquivo não passou no teste de XSS
}

Segurança contra ataque CSRF

O CSRF (do inglês Cross-site request forgery- Falsificação de solicitação entre sites) é um tipo de ataque informático malicioso a um website no qual comandos não autorizados são transmitidos através de um utilizador em quem o website confia.[1] Em contraste com o cross-site scripting (XSS), que explora a confiança de um utilizador para um site particular, o CSRF explora a confiança que um website tem do navegador do usuário.(Wikipedia)

O CodeIgniter possui rotinas nativas para lidar com CSRF, tudo de forma simples e eficiente. Para ativar o CSRF, basta alterar a variável de configuração $config[‘csrf_protection’] no arquivo application/config/config.php.

A partir daí, caso você esteja utilizando as funções do form helper, os campos do tipo hidden com o token para processamento serão gerados de forma automática. mas se você estiver criando o formulário manualmente, com HTML puro, então você vai precisar obter esse token no controller e enviar para a view onde está o formulário.

Veja no fragmento de código abaixo como recuperar essas informações para poder inserir no formulário:

Fique ligado, a segurança do seu sistema é muito importante.

Até a próxima!