Vous êtes sur la page 1sur 11

Fasci-Tech

Fasci-Tech Peridico Eletrnico da FATEC-So Caetano do Sul, So Caetano do Sul, v. 1, n. 5, Out/Dez 2011, p.
56 a 66.


PRTICAS DE SEGURANA PARA O DESENVOLVIMENTO DE
SISTEMAS WEB

Eric Komiyama Aoki
1

Prof. MSc. Alan Henrique Pardo de Carvalho
2


Resumo:
A escalabilidade, portabilidade e fcil acesso providos pela plataforma Web tm
popularizado seu uso no desenvolvimento de diversas aplicaes. Porm, o
crescente nmero de incidentes de segurana levanta preocupaes quanto sua
seguridade. Uma parte destes incidentes decorrem da falta de considerao de
segurana durante o processo de desenvolvimento. Este trabalho tem como
objetivo propor prticas de segurana a serem aplicadas durante o processo de
desenvolvimento de software Web que minimizem os riscos, aumentando a
qualidade e confiabilidade do produto final. Nele sero apresentados: conceitos
de segurana da informao, as vulnerabilidades mais comuns existentes em
software Web e algumas prticas que devem ser aplicadas durante o
desenvolvimento.
Palavras chave: Web; segurana; desenvolvimento; vulnerabilidade.

Abstract:
Scalability, portability and easy access provided by the Web plataform has
popularized its use in the development of various application. However, the
growing number of security incidents raised concerns about its safety. One
reason for these incidents is the lack of security consideration during the
development process. This paper aims to propose security practices to be
applied during the development process of Web software that minimize risks,
enhancing quality and reliability of the final product. It will be presented:
information security concepts, the most common vulnerabilities on Web software
and some practices that should be applied during the development.
Keywords: Web; security; development; vulnerability.

1. Introduo
Nos ltimos anos, o desenvolvimento de aplicaes voltadas Web vem sendo
expandido por apresentar vantagens sobre software instalado localmente, tais como: no

1
Aluno de Iniciao Cientfica do Curso de Bacharelado em Anlise de Sistemas e Tecnologia da
Informao da FATEC-So Caetano do Sul.
2
Professor da FATEC-So Caetano do Sul (Orientador do Trabalho).
Fasci-Tech


Fasci-Tech Peridico Eletrnico da FATEC-So Caetano do Sul, So Caetano do Sul, v. 1, n. 5, Out/Dez 2011, p.
56 a 66.


necessidade de instalao local, atualizao rpida, fcil escalabilidade e acesso de
qualquer local com conexo Internet. Porm, o aumento no nmero de incidentes de
segurana na Web gera preocupao quanto confiabilidade desses sistemas. As
estatsticas do Centro de Estudos, Reposta e Tratamento de Incidentes de Segurana no
Brasil mostram que o nmero de incidentes notificados mais que dobraram de 2005
(68.000) a 2010 (142.844). Os investimentos em infraestrutura na rea de segurana,
com o uso de firewalls e antivrus, por exemplo, fornecem alguma proteo s redes e
aos servidores, embora sejam insuficientes frente s necessidades de segurana no nvel
da aplicao. Para suprir essa lacuna existem prticas que podem ser utilizadas durante
o desenvolvimento dos sistemas, embora acabem sendo negligenciadas por muitos
desenvolvedores em favor do tempo de entrega, da usabilidade e do design grfico,
como relatado por Scott e Sharp (2002).

2. Segurana da informao
A segurana de sistemas cada vez mais importante para empresas e indivduos,
especialmente com o constante aumento do nmero de servios prestados via Internet e
de incidentes de segurana, segundo Sommerville (2007). Para Fiorio et al. (2007), a
segurana em sistemas computacionais consiste em empregar conceitos, metodologias e
tcnicas que protejam o sistema de ataques, sobretudo externos, que venham a gerar
prejuzos tanto de ordem financeira quanto social.
De acordo com Bishop (2008), a segurana da informao composta por trs
pilares, que so:
Confidencialidade: manter informaes ou recursos em segredo. Exemplo: o uso
de nome de usurio e senha que permite que somente um usurio acesse o e-mail.
Integridade: a confiabilidade na origem da informao. Exemplo: um usurio
recebe um e-mail de seu amigo que foi alterado por um interceptador, perdendo a
integridade.
Fasci-Tech


Fasci-Tech Peridico Eletrnico da FATEC-So Caetano do Sul, So Caetano do Sul, v. 1, n. 5, Out/Dez 2011, p.
56 a 66.


Disponibilidade: a garantia de que as informaes estaro disponveis aos
usurios autorizados quando necessrio. Exemplo: a sobrecarga nos servidores da
Receita Federal compromete a disponibilidade do sistema de envio de declaraes
de impostos.
Em aplicaes Web, a manuteno dos trs pilares pode ser mais difcil do que
naquelas rodadas localmente. Isso se deve ao fato de estarem disponveis em uma rede
aberta, o que pode comprometer a confiabilidade e integridade, e de dependerem,
muitas vezes, da infraestrutura de terceiros, o que pode comprometer a disponibilidade.
Para Pinto e Stuttard (2008), o maior problema de segurana das aplicaes Web
o fato de que os usurios podem fazer entradas arbitrrias, ou seja, podem transmitir
tipos de dados no previstos no software, como parmetros, comandos e cookies, que
podem comprometer a aplicao e a seguridade de seus dados. Isso reforado por
Scott e Sharp (2002), que afirmam que a maioria dos problemas de segurana no nvel
de aplicao so causados pelo fato de que o aplicativo assume que os dados
transmitidos pelos usurios so confiveis.
Uma das estratgias adotada pelos desenvolvedores para lidar com esses
problemas a de pensar que o usurio ir abusar do sistema de alguma maneira. o que
Van der Stock et al. (2005) definem como processo "Thinking Evil", colocar-se como
atacante para pensar nos meios de proteo.

3. Vulnerabilidades da Web
De acordo com a classificao do The Open Web Application Security Project
(2010), as dez vulnerabilidades mais crticas da Web so:
1) Injeo de cdigos: insero de cdigos arbitrrios, como SQL injection, em um
sistema que pode permitir a um atacante realizar operaes no autorizadas.
2) Cross-site scripting (XSS): insero de cdigos arbitrrios em pontos falhos de
uma aplicao que so executados quando os usurios a acessam. Estes pensam
Fasci-Tech


Fasci-Tech Peridico Eletrnico da FATEC-So Caetano do Sul, So Caetano do Sul, v. 1, n. 5, Out/Dez 2011, p.
56 a 66.


que as operaes realizadas pelos cdigos arbitrrios so confiveis, j que a
aplicao que acessam confivel.
3) Quebra de autenticao e gerenciamento de sesso: mau gerenciamento de
sistemas de login e senha.
4) Referncia direta de objeto inseguro: acesso no autorizado de um objeto, uma
parte do programa, restrito atravs de outro desprotegido.
5) Cross-site request forgery (CSRF ou XSRF): similar ao XSS, porm neste caso
explora-se a confiabilidade do site no navegador e no no usurio.
6) M configurao de segurana: falta de segurana no servidor, como falta de
atualizao de softwares e m configurao dos privilgios de acesso.
7) Armazenado criptogrfico inseguro: criptografia inadequada, backup de dados
junto com as chaves criptogrficas ou falta de controle de acesso.
8) Falha na restrio de URL: falha em restringir o acesso a certas pginas pela
insero direta da URL (Uniform Resource Locator, o mesmo que endereo)
daquela pgina.
9) Proteo insuficiente na camada de transporte: falta do uso do SSL, camada de
proteo criptogrfica, em todas as operaes com dados sigilosos.
10) No validao de redirecionamentos: no verificao dos endereos ou m
aplicao de redirecionamentos para outros sites.
Das dez vulnerabilidades listadas: uma, armazenado criptogrfico inseguro, faz
parte do gerenciamento de banco de dados, mas tambm ligada ao planejamento do
software; outras duas, proteo insuficiente na camada de transporte e m configurao
de segurana, se referem mais parte de infraestrutura de redes; as sete demais tm
ligao direta com o processo de desenvolvimento do software. Isso demonstra a
importncia da adoo de prticas de segurana durante o desenvolvimento para
minimizar o risco de falhas.

4. Prticas de segurana
Fasci-Tech


Fasci-Tech Peridico Eletrnico da FATEC-So Caetano do Sul, So Caetano do Sul, v. 1, n. 5, Out/Dez 2011, p.
56 a 66.


As prticas a seguir so parte de um trabalho de iniciao cientfica; portanto a
lista no est completa. O foco no primeiro momento no processamento de
formulrios e sistemas de login, j que eles so os principais alvos de injeo de cdigos
e XSS, os dois primeiros colocados da lista de vulnerabilidades.

4.1. Processamento de formulrios
Formulrios so importantes componentes da maioria das aplicaes Web, pois
permitem aos usurios inserirem dados ou parmetros necessrios para o seu
funcionamento, mas tambm so um ponto fraco em potencial. Um atacante poderia
tentar inserir cdigos arbitrrios ou causar problemas de integridade se as entradas no
forem validadas corretamente.

Validao lado cliente e lado servidor
A validao de formulrios deve ser feita tanto do lado cliente quanto do lado
servidor. Isso necessrio, pois os controles de validao do lado cliente, tipicamente
em JavaScript, podem ser alterados ou removidos deixando o sistema sem proteo. Por
outro lado, usar somente controles do lado servidor, como em ASP.Net ou PHP, pode
no ser vantajoso, j que usaria recursos do servidor e banda da rede, como mencionado
por Niederauer (2004). Sendo assim, se todas as validaes fossem feitas no servidor,
haveria um excesso de demanda de seus recursos, comprometendo o desempenho.
O objetivo da dupla validao que o lado cliente lide com a maior parte das
requisies, que vm de usurios comuns que cometem erros banais, e que o lado
servidor lide com aqueles usurios mal intencionados, que so minoria.

Caixa de texto
Caixa de texto ou textbox provavelmente o tipo de campo mais problemtico
na validao de formulrios, j que o usurio pode informar qualquer coisa.
Fasci-Tech


Fasci-Tech Peridico Eletrnico da FATEC-So Caetano do Sul, So Caetano do Sul, v. 1, n. 5, Out/Dez 2011, p.
56 a 66.


Definir o comprimento mximo do campo importante para delimitar o que
pode ser inserido nele. O comprimento pode ser definido no prprio HTML (HyperText
Markup Language) pelo parmetro maxlength. Porm, como se trata de HTML, ele
pode ser alterado, permitindo que se insiram mais caracteres que o previsto. Isso pode
gerar problemas, como o citado por Hope e Walther (2009), no qual um valor muito
grande, 1MB, enviado causando lentido. Sendo assim, necessrio verificar o
comprimento no lado servidor.
Outro problema refere-se a caracteres especiais que podem interferir de alguma
maneira no sistema, como HTML, SQL e JavaScript. Um atacante poderia tentar injetar
algum cdigo malicioso para prejudicar o sistema e seus usurios. O uso de
codificadores e funes de escape, presentes nas linguagens mais usadas, ajuda a filtrar
as entradas. De maneira geral, deve-se evitar ao mximo o uso de caracteres especiais.
Uma das solues para verificar a coerncia dos dados a expresso regular. De
acordo com Negrino e Smith (2001), expresso regular um conjunto de smbolos
especiais utilizados para se definir o padro de uma expresso. As linguagens e scripts
mais usadas na Web, como ASP.net, PHP e JavaScript, tm suporte a expresses
regulares. Elas permitem comparar as entradas de um usurio com um padro pr-
definido, permitindo saber se ele est inserindo um valor coerente ao requisitado.



Campos de resposta fechada
Os campos de resposta fechada so aqueles em que o usurio s pode escolher
entre as opes pr-programadas. So eles: caixa de combinao (combobox), caixa de
seleo (checkbox) e botes de rdio.
Apesar de terem valores fechados, eles ainda assim precisam ser verificados do
lado servidor, j que seu HTML pode ser modificado.

Fasci-Tech


Fasci-Tech Peridico Eletrnico da FATEC-So Caetano do Sul, So Caetano do Sul, v. 1, n. 5, Out/Dez 2011, p.
56 a 66.


Campos ocultos
Campos ocultos so aqueles que no so mostrados no formulrio para o
usurio. Seu intuito manter informaes na mquina do usurio que sero usadas
posteriormente pelo aplicativo. No se deve armazenar dados importantes em campos
ocultos, j que o HTML pode ser modificado. Dentre as alternativas, h cookies e
passagem de parmetros pela URL.

Mtodo GET
Pelo mtodo GET, os dados dos formulrios so passados como parmetros na
URL. Van der Stock et al. (2005) afirmam que o processamento de formulrio por esse
mtodo no deve ser usado, j que ele aumenta as chances de XSS. O mtodo POST
deve ser o padro, GET deve ser usado apenas para propsitos de navegao.

4.2. Sistemas de login
Sistemas de login tm como objetivo verificar a identidade do usurio atravs da
autenticao por senha, permitindo que acesse dados confidenciais a ele ou a um grupo
restrito de pessoas. Boa parte das aplicaes Web mais complexas requerem este tipo de
sistema: comrcio eletrnico, fruns, e-mail, sistemas empresariais etc.

Senhas fortes
O nvel de segurana das senhas est relacionado ao quo rpido elas podem ser
quebradas. Com relao a ataques brute force (tentativa e erro) e de dicionrio (o
mesmo que brute force, porm com palavras pr-selecionadas) quanto mais caracteres e
variaes de caracteres, mais difcil ser quebr-la. Ento, pode-se dizer que senhas
fortes tm as seguintes caractersticas:
So longas, acima de 8 dgitos.
Possuem letras maisculas e minsculas (sistema deve diferenci-las), nmeros e
outros caracteres.
Fasci-Tech


Fasci-Tech Peridico Eletrnico da FATEC-So Caetano do Sul, So Caetano do Sul, v. 1, n. 5, Out/Dez 2011, p.
56 a 66.


No so palavras, nomes ou datas comumente usadas.
H um porm: senhas desse tipo no costumam ser facilmente memoriveis. De
acordo com Pinto e Stuttard (2008), um usurio tpico no costuma ter preocupao
com a segurana de sua senha, o que o leva a colocar senhas fracas e mais facilmente
memoriveis. Ainda segundo os autores, a maioria das aplicaes Web no tem nenhum
controle que obrigue o usurio a definir uma senha forte. O resultado que tais senhas
podem ser quebradas com relativa facilidade.
A aplicao deve exigir que o usurio insira senhas fortes no momento do
cadastro ou renovao de senha.

Expirao de senha
Mesmo senhas fortes podem ser quebradas depois de algum tempo. Para se
evitar esse problema, Bishop (2008) afirma que as senhas devem ter um prazo de
expirao ao final do qual o usurio precisa inserir uma nova senha. Essa imposio
certamente no de agrado de muitos usurios, j que requerem que memorizem uma
nova senha. O autor ressalta ainda que de nada adianta o usurio colocar uma senha j
usada como nova, sendo necessrio um mecanismo que verifique isso.
Apesar de ser uma tcnica que garante maior confiabilidade, a aplicao da troca
de senha deve levar em considerao as necessidades de segurana que o negcio exige.

Limitao de tentativas
Ataques com testes de tentativa e erro utilizam softwares automticos. Limitar o
nmero de tentativas pode ser uma soluo, como ocorre com senhas de bancos. Porm,
ao contrrio dos bancos, o usurio pode no ter como ir fisicamente a um determinado
lugar para desbloquear sua conta. Dentre as alternativas, Bishop (2008) sugere um
limite de tentativas por um determinado tempo e Pinto e Stuttard (2008), o uso do
CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans
Fasci-Tech


Fasci-Tech Peridico Eletrnico da FATEC-So Caetano do Sul, So Caetano do Sul, v. 1, n. 5, Out/Dez 2011, p.
56 a 66.


Apart), que permite distinguir uma pessoa de uma mquina mostrando-lhe caracteres
distorcidos e pedindo para que os digitem em um formulrio.

Armazenamento de usurio e senha
Apesar de que teoricamente um banco de dados bem configurado no ter seus
dados expostos, o armazenamento de senhas deve ser criptogrfico, seguindo-se o
princpio de defesa em profundidade.
Um dos meios mais conhecidos de criptografia de senhas o hash, um algoritmo
que calcula um nmero, geralmente hexadecimal, de tamanho fixo nico para os
caracteres inseridos. Este nmero armazenado no banco e usado para comparar com a
senha do usurio. Ele no pode ser desfeito, a nica maneira de se saber o contedo
original com um ataque brute force.
Funo esqueci a senha
Inconveniente tanto para a aplicao quanto para o usurio, quando este esquece
a senha necessrio haver algum procedimento que permita a ele reaver o acesso ao
sistema. Algumas tcnicas muito conhecidas de recuperao de senha incluem:
Entrar em contato com o administrador: este mtodo requer que o usurio fale
pessoalmente com o administrador, como ocorre com os bancos. Apesar de ser
seguro, j que se sabe que realmente o usurio, ele no vivel em boa parte das
aplicaes seja pelo nmero de usurios ou pela impossibilidade da presena
fsica.
Pergunta secreta: durante o cadastro obrigatrio definir uma pergunta e sua
resposta secreta que sero utilizados como na recuperao. O problema com essa
abordagem, segundo Pinto e Stuttard (2008), que a maioria dos usurios tendem
a escolher perguntas e respostas bvias.
Lembrete de senha: durante o cadastro pede-se que se insira um lembrete de
senha, uma expresso que o faa lembrar da senha. Este mtodo possui o mesmo
problema da pergunta secreta, pois o usurio tende a colocar informaes bvias.
Fasci-Tech


Fasci-Tech Peridico Eletrnico da FATEC-So Caetano do Sul, So Caetano do Sul, v. 1, n. 5, Out/Dez 2011, p.
56 a 66.


Envio de e-mail: neste caso enviado um e-mail ao usurio com sua senha, uma
nova senha ou um link para recadastrar a senha. Geralmente o que ocorre o
envio dos dados para o e-mail previamente cadastrado, a senha do e-mail serve
como autenticao. Este mtodo relativamente simples e confivel, mas o nvel
de segurana depende de como o usurio trata de seu e-mail.
Vale lembrar que tambm pode haver combinaes dos mtodos citados, como
definir uma pergunta secreta para a qual se a resposta for correta enviar um e-mail
contendo um link temporrio que permite redefinir a senha.

5. Consideraes Finais
O constante aumento no nmero de incidentes de segurana e a alavancagem dos
sistemas Web tornam importante a manuteno de sua seguridade. Porm, com as
exigncias do mercado, os desenvolvedores tm priorizado outros aspectos do
desenvolvimento de software em detrimento da segurana. Das dez vulnerabilidades
mais crticas da Web, sete tm relao direta com o processo de desenvolvimento.
necessrio dar uma maior ateno ao aspecto de segurana nesta fase com a aplicao
de prticas que reduzam as possibilidades de falhas e prejuzos para a empresa, os
clientes e o prprio desenvolvedor.

Referncias:

BISHOP, M. Introduction to Computer Security. 4 ed. Boston/MA: Addison-Wesley,
2008.

CENTRO DE ESTUDOS, REPOSTA E TRATAMENTO DE INCIDENTES DE
SEGURANA NO BRASIL. Estatstica dos Incidentes Reportados ao CERT.br.
Disponvel em: http://www.cert.br/stats/incidentes/. Acesso em: 12/03/2011.

FIORIO, M. et al. Solues para o Desenvolvimento de Sistemas Seguros. VII Simpsio
Brasileiro em Segurana da Informao e de Sistemas Computacionais, Rio de
Janeiro/RJ, 2007, p. 153-198.

Fasci-Tech


Fasci-Tech Peridico Eletrnico da FATEC-So Caetano do Sul, So Caetano do Sul, v. 1, n. 5, Out/Dez 2011, p.
56 a 66.


HOPE, P.; WALTHER, B. Web Security Testing Cookbook. Sebastopol/CA: O'Reilly
Media, 2009.

NEGRINO, T.; SMITH, D. JavaScript para World Wide Web. 4 ed. Rio de Janeiro/RJ:
Campus, 2001.

NIEDERAUER, J. PHP para quem Conhece PHP: Recursos Avanados para a Criao
de Websites Dinmicos. 2 ed. So Paulo: Novatec, 2004.

PINTO, M.; STUTTARD, D. The Web Application Hacker's Handbook: Discovering
and Exploiting Security Flaws. Indianapolis/IN: Wiley Publishing, 2008.

SCOTT, D.; SHARP R. Abstracting Application-Level Web Security. Proceedings of
The 11th International Conference on World Wide Web, Honolulu/HW, 2002, p. 396-
407.

SOMMERVILLE, I. Software Engineering. 8 ed. Reading/MA: Addison Wesley, 2007.

THE OPEN WEB APPLICATION SECURITY PROJECT. OWASP Top 10 - 2010:
The Ten Most Critical Web Application Security Risks. s. l., 2010. Disponvel em:
https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project. Acesso em:
08/04/2011.

VAN DER STOCK, A. et al. A Guide to Building Secure Web Applications and Web
Services. s. l.: The Open Web Application Security Project, 2005. Disponvel em:
http://www.owasp.org/index.php/OWASP_Guide_Project. Acesso em: 03/04/2011.