Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Segurança em aplicativos com conectividade 
 
 
Com a evolução na adoção de TI, a complexidade dos aplicativos que desenvolvemos também 
aumentou. Mas não só isso (ou inclusive por causa disso), aumentou o grau de exposição das 
empresas aos ataques via web. Parece que cada vez temos mais portas e janelas por onde os 
ladrões podem entrar. Se na década de 1980, os ladrões entravam pela porta (o que ainda é 
possível), com o advento da internet nos anos 1990 tornou-se possível entrar pela rede por um 
envelope virtual chamado e-mail e, depois, por programas de mensagens. Os riscos continuam 
aumentando, e nós também continuamos aprendendo a nos proteger. 
No ano de 2010, como mostra o estudo Charles Henderson de Trustwave, devíamos nos proteger 
de ataques que chegavam por via física, pela rede, por e-mail, nos aplicativos, via wireless, do 
client-side, através dos celulares e pelas redes sociais. O estudo conclui, entre outras coisas, que 
a velhas ameaças nunca desaparecem, que as novas apontam para o usuário e que as 
ferramentas maliciosas são cada vez mais sofisticadas. 
Os números que as estatísticas mostram são desastrosos. Pareceria que na área de TI, nós, os 
profissionais de infraestrutura e desenvolvimento, não sabemos colocar no ar aplicativos seguros 
o bastante. E não estamos falando de desejar aplicativos sem vulnerabilidades (esses não 
existem): o Projeto de Estatísticas de Segurança de Aplicativos Web 2008, do Web Application 
Security Consortium (WASC), entre outras coisas, conclui que a probabilidade de detectar um erro 
crítico ou urgente em um aplicativo web dinâmico é de 49% escaneando-o automaticamente e 
96% depois de uma análise por especialistas. 
Outro estudo de WhiteHat Security mostra as vulnerabilidades por setor (Bancos, Educação etc.) e 
também confirma os números. Por que esses problemas não são corrigidos? Essa última análise 
esforça-se para responder à pergunta: faltam responsáveis para manter o código e evitar 
vulnerabilidades; e mais: os desenvolvedores não sabem nem entendem de “vulnerabilidades”. 
A tarefa de garantir a segurança de um aplicativo não é fácil, a arquitetura é cada vez mais 
complexa. Há que se tomar cuidado no software e no ambiente que este executa. Falemos sobre o 
software hoje: aplicativos que tem seus dados em algum DBMS, sua lógica de negócios em um 
servidor de aplicativos, servidores web Java ou .NET, por exemplo, servindo páginas dinâmicas. 
Entry points para páginas, serviços AJAX, serviços REST e SOAP. JavaScript e HTML 5 rodando no 
browser, nos smart devices aplicativos nativos – ou não – que se conectam a esses serviços. 
Tudo isso acrescenta aos pontos de acesso – e de vulnerabilidade – existentes nos servidores as 
vulnerabilidades do tráfego de dados pelo canal, do código executado no dispositivo e dos dados 
em cache ou armazenados com localmente em momentos distintos. Um banquete para o hacker, 
uma dor de cabeça, uma noite de insônia e um motivo para árduos estudos em matérias de 
“segurança” para quem desenvolve. 
Tentar solucionar isso enquanto desenvolvemos com equipes que implementam manualmente 
módulos de segurança e equipes que supervisionam manualmente o cumprimento das políticas 
de segurança é simplesmente uma tarefa entediante e que já demonstrou ser insuficiente, além de 
pouco eficaz. 
É mais prático e adequado aplicar a segurança no desenvolvimento de software através de um 
desenvolvimento de software orientado a modelos (Model driven development*) e, além disso, 
baseado em conhecimento (Knowledge-based development**), combinado com um ciclo de 
desenvolvimento seguro. Isso, aliás, ajuda a diminuir os custos de desenvolvimento e 
manutenção. 
Nesse tipo de desenvolvimento, abstraímos o conhecimento das intenções do desenvolvedor e 
centralizamos a necessidade do especialista em segurança que se requer para escrever 
aplicativos, pois é o responsável pela ferramenta de geração de código e conta com uma equipe 
de especialistas de segurança de alto nível. Eles se encarregam de que, quando o gerador escrever 
o código, faça o programa mais seguro e, dessa maneira, os desenvolvedores não terão que ser 
especialistas em segurança para poder entregar aplicativos robustos. 
As ferramentas costumam contar com módulos pré-fabricados aos quais os desenvolvedores 
podem se conectar e que garantirão que quando o aplicativo for gerado apresente todas as rotinas 
e checagens de segurança que permitam cumprir com as normas básicas de segurança e 
minimizar as vulnerabilidades a níveis muito menores que se se programasse sem os 
conhecimentos de segurança adequados. 
É preciso destacar que não existe um aplicativo 100% seguro, já que sempre existem detalhes que 
escapam ao modelo, mas com essas facilidades tiramos do desenvolvedor a responsabilidade de 
ter que ser praticamente um hacker para fazer um aplicativo seguro e deixamos pendente apenas 
a etapa de supervisão, indispensável no desenvolvimento de qualquer bom aplicativo. 
Desta maneira, uma ferramenta de desenvolvimento orientado a modelos e baseado em 
conhecimento fornece uma forma para que aqueles que desenvolvem não tenham que separar 
recursos para desenvolver módulos de segurança, nem tenham que ter a expertise de um hacker 
ou ser especialista de segurança para fazer seus aplicativos. Com ele, consegue-se detectar e 
corrigir as vulnerabilidades durante o próprio ciclo de desenvolvimento em vez de fazê-lo quando o 
aplicativo é executado. 
————————————- 
* A engenharia orientada a modelos (MDE) é um paradigma de desenvolvimento de software 
centrado na criação e exploração de modelos de domínio (isso é, representações abstratas dos 
conhecimentos e atividades que regem um domínio de aplicação particular) mais que em 
conceitos de informático (ou algoritmos). 
http://es.wikipedia.org/wiki/Ingenier%C3%ADa_orientada_a_modelos 
** No desenvolvimento baseado em conhecimento, trata-se de construir primeiro um robusto 
modelo de dados e depois descrever as visões dos usuários, para assim abarcar todo o 
conhecimento dos sistemas e negócios e, a partir desse, projetar, gerar e manter de forma 100% 
automática os sistemas computacionais de qualquer empresa. 
http://www.genexus.com/files/wp-desarrollo-basado-en-el-conocimiento?es 
Armin Bachmann, coordenador de Suporte de Usuários para GeneXus International – empresa 
criadora de GeneXus, a ferramenta de desenvolvimento de sistemas que permite criar aplicativos 
para as linguagens e plataformas mais populares do mercado, sem necessidade de programar.

Mais conteúdos dessa disciplina