A importância das histórias de segurança

em Produtos, Tecnologia.

Um tema muito interessante que vimos na conferência XP 2010 é sobre a importância de haver histórias de segurança no backlog de desenvolvimento de aplicações. Tema este que muitas vezes é negligenciado por desenvolvedores e product owners.

Que história é essa?

Histórias de segurança são histórias escritas por usuários mal intencionados, que buscam encontrar brechas de segurança no sistema que está sendo desenvolvido. Obviamente que esses usuários mal intencionados são só de brincadeirinha; eles são, na verdade, desenvolvedores e product owners bem intencionados, que buscam encontrar brechas de segurança para que estas sejam fechadas.

Elas são extremamente importantes, uma vez que não queremos de maneira nenhuma colocar sistemas vulneráveis em produção, expondo nossas empresas e clientes a ataques destrutivos. Portanto, elas precisam ser validadas no processo de QA — de preferência, com testes automatizados —, tal como acontece com as histórias de usuários.

Como escrevê-las?

A ideia, a princípio, é escreve uma ou mais histórias de segurança a partir de uma história de usuário, sempre que cabível.

who-what-why

Geralmente, uma história de usuário é escrita mais ou menos assim:

“Eu, como cliente do banco, gostaria de efetuar login no internet bank  para ter acesso ao meu saldo.”

Ótimo. Como ficaria então uma história de segurança para esta história de usuário? Poderia ser algo do tipo:

“Eu, como um usuário mal intencionado, gostaria vasculhar o histórico do browser em busca de URLs de login no internet bank para obter o nome de usuário e senha dos usuários anteriores.”

O que tornaria obrigatório verificar se as informações de autenticação do usuário estão sendo enviadas para o servidor via método GET ou POST do HTTP.

Um exemplo bem trivial, mas acho que deu para compreender a motivação, não?

bike-com-cadeado

Ah! Uma dica bacana é escrever essas histórias em post-its de cor diferente das histórias de usuário.

Mas e depois de escritas?

Seguimos o processo de implementação de histórias normalmente, escrevendo testes automatizados e tudo mais. Elas são histórias como qualquer outra, do ponto de vista de design-code-test, mas com o objetivo de invulnerabilização do sistema desenvolvido.

Conclusão

Se você ainda não se importava muito com esse tema, espero que esse post tenha te ajudado a mudar de ideia, porque negligenciar esse tema pode te trazer terríveis consequências. Cruz, credo! :p

por Leandro da Silva e Alexandre Freire da Silva

Você também pode gostar