Protegendo seu código de um ataque XSS

air force security forces

Esta semana vários websites conhecidos como o Twitter, Orkut e o YouTube sofreram com ataques XSS.
O XSS (Cross-site scripting) é um tipo de vulnerabilidade encontrado normalmente em aplicações web que permite que crackers injetarem scripts client-side em páginas visualizadas por outros usuários. Os ataques de XSS somam aproximadamente 80% de todas as vulnerabilidades documentadas pela Symantec desde 2007. O impacto no website pode variar de um pequeno incômodo a um risco de segurança significativo, dependendo da sensibilidade dos dados tratados pelo website vulnerável e a natureza das eventuais reduções de segurança implementadas pelo proprietário do mesmo.

Ataque

Através de um XSS, o cracker injeta códigos JavaScript em um campo texto de uma página já existente e este JavaScript é apresentado para outros usuários.

Imagine que você tenha um campo de texto simples, para que o usuário possa atualizar seu status (What’s happening?) e uma tela para exibir esse status assim:

Se um usuário malicioso preencher com:

Se não há nenhuma proteção contra XSS, cada vez que um usuário abrir a página, vai ver o alerta:
XSS Example

Proteção

Até o Rails 2.3, para sanitizar qualquer entrada gerado pelo usuário, utiliza-se o método h().

No Rails 3, por padrão, toda saída é automaticamente sanitizada e por isso não há necessidade de colocar o método h(). Caso você queira exibir a string sem sanitizar, use o método raw():

Para quem tem aplicação em produção usando Rails 2.3 e não quer correr o risco de esquecer de sanitizar alguma entrada de usuário, pode utilizar o plugin RailsXSS, instalando-o no seu projeto:
./script/plugin install git://github.com/rails/rails_xss.git

Este é um assunto importante que quem desenvolve para a web precisa entender e lembrar de sempre sanitizar qualquer entrada gerada pelo usuário e isso provavelmente vai lhe poupar muito tempo no futuro.

Mais informações

Recommend me on WWR

One Comment on “Protegendo seu código de um ataque XSS