Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Se no for definida uma regra de controle de acesso para uma operao, esta operao poder ser realizada livremente por usurios noautenticados. Caso se deseje que todas as pginas de uma aplicao web estejam sob controle de acesso, deve-se inserir todas elas em um mesmo diretrio, e definir um padro como nome_da_pasta/*, correspondendo a todas as pginas da aplicao. No se deve definir simplesmente /*, padro que corresponde a todas as pginas da aplicao. Isso porque caso sua aplicao utilize uma pgina de login customizada, esta pgina deve estar acessvel para usurios annimos, assim como a pgina de erro associada.
Observ e que, da forma como as regras de controle de acesso foram definidas, os conjuntos de pginas acessv eis para usurios e administradores so completamente separados. C aso se deseje que o administrador tambm possa acessar as pginas dos usurios, h trs alternativ as:
Acrescentar mais um role-name com o v alor administrador dentro do auth-constraint do elemento web-resource-collection
Pginas do Usurio Acrescentar mais um url-pattern com o v alor /usuarios/* dentro do auth-constraint do web-resource-collection Pginas do
A dministrador Dar aos usurios que recebem o role administrador tambm a role usuario
Agora v eja na Figura 1 a estrutura do pacote war da aplicao de exemplo. O contedo das pginas liv re, pois estamos interessados apenas em v erificar quais usurios conseguem acessar quais pginas. A pgina index.jsp contm link s para as pginas de ndice em cada subdiretrio, funcionando como um menu de acesso aplicao. Por simplicidade o exemplo consiste apenas de pginas JSP, mas as mesmas regras se aplicam a serv lets, pois cada serv let mapeado para uma ou mais URIs no descritor web.xml. A restrio de acesso baseada em URIs tambm se aplica a pginas estticas, criando uma estrutura simples e uniforme para controlar o acesso a todas as pginas da aplicao. por isso que alguns serv idores de aplicaes, como o Tomcat, desabilitam em suas configuraes padro o acesso a serv lets pelo nome da classe (com a URI /serv lets/pacote.nomeDaC lasse), apesar desse tipo de acesso ser prev isto pela especificao de Serv lets. O acesso pelo nome de classe permitiria que um serv let sujeito a controle de acesso pela sua URI (mapeada explicitamente no web.xml) fosse acessado por usurios no-autorizados, pois seria utilizada uma URI diferente.
<security -constraint> <web-resource-collection> <web-resource-name>Paginas do Usuario </web-resource-name> <url-pattern>/usuarios/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>usuario</role-name> </auth-constraint> </security -constraint> <security -constraint> <web-resource-collection> <web-resource-name>Paginas do Administrador</web-resource-name> <url-pattern>/admin/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>administrador</role-name> </auth-constraint> </security -constraint> <security -role> <role-name>usuario</role-name> </security -role> <security -role> <role-name>administrador</role-name> </security -role> <!-- ... aqui entra a configurao de login da aplicao --> </web-app>
Nas duas primeiras formas de autenticao o nav egador exibe uma janela de login, sendo fornecidas as credenciais do usurio por meio de cabealhos HTTP. Na terceira, dev e ser instalado um certificado digital no nav egador do usurio, semelhante ao instalado em um serv idor web para uso de HTTPS; a simples presena deste certificado autentica o usurio. Na quarta forma de autenticao, uma pgina definida pela aplicao pede o login e senha do usurio Os desenv olv edores em geral preferem a quarta forma de autenticao (Form Based), pois enquanto que nas duas primeiras ele no tem controle sobre a aparncia da tela de login, na terceira opo necessrio configurar as mquinas dos usurios uma a uma, o que no v iv el exceto em pequenas intranets. Vamos apresentar neste momento a autenticao Basic; depois passaremos para a autenticao Form. Os seguintes elementos dev em ser acrescentados ao descritor web.xml para configurar esta forma de autenticao: <login-config> <auth-method>BASIC</auth-method> <rea lm -na m e >Ex em plo de Segura na J2EE</rea lm -na m e> </login-config>
O elemento realm-name identifica o domnio (ou zona) de segurana para o nav egador web. Assim o nav egador sabe se pode ser utilizada uma senha j informada antes pelo usurio, ou se dev e ser requisitada uma nov a senha. O texto fornecido neste elemento ser apresentado pelo nav egador em sua janela de login, como mostra a Figura 2 . Sob o ponto de v ista do desenv olv edor, a aplicao de exemplo estaria pronta para ser executada. Mas o administrador do serv idor ainda tem que configurar um container web para autenticar usurios e reconhecer os roles definidos pela aplicao.
Figura 2. Janela de autenticao do Mozilla ao acessar o link Pginas dos usurios da aplicao de exemplo
Validao de senhas no T omcat Dev e ser configurado um realm2 para que o Tomcat seja capaz de v alidar senhas e associar roles a usurios. Diferentes tipos de realms obtm as informaes sobre senhas e roles de diferentes fontes de dados, que podem ser arquiv os XML, bancos de dados relacionais (v ia JDBC) ou diretrios LDAP (v ia JNDI). Voc pode, claro, estender o Tomcat com nov os realms produtos de terceiros utilizam esta capacidade para permitir a integrao com os bancos de dados de usurios do Unix, Windows e Netware.
Um realm pode ser definido em qualquer nv el da hierarquia de elementos do arquiv o server.xml do Tomcat, e se aplica a todas as aplicaes (contextos) dentro daquele nv el. Assim, pode-se ter desde um nico banco de dados de usurios para todos os domnios v irtuais hospedados pelo mesmo serv idor, at bancos de dados isolados para cada contexto de cada domnio; ou qualquer configurao entre esses dois extremos. Veja a seguir as alteraes feitas no arquiv o server.xml para v alidar senhas utilizando um arquiv o chamado users.xml (mostrado na Listagem 2 ): <Realm className= "org.apache.catalina.realm.Memory Realm" pathname="conf/users.xml" />
Assumindo uma instalao padro do Tomcat 5, insira este elemento imediatamente antes de <Host name=localhost...> e comente qualquer outro elemento <Realm> presente no server.xml. Os roles admin e manager definidos no users.xml, assim como o usurio admin, esto presentes para que seja possv el executar as aplicaes padro do Tomcat, Manager e A dmin. Leitores interessados em mais detalhes sobre as aplicaes administrativ as do prprio Tomcat podem consultar o artigo desta coluna na Edio 19. J podemos copiar o arquiv o war da aplicao de exemplo para a pasta webapps do Tomcat e acessar a URL http://127.0.0.1:8080/jm-
seguranca-j2ee. Ao serem clicados os link s Pginas dos usurios ou Pginas dos administradores o nav egador ir pedir por um login e senha,
exibindo uma janela semelhante Figura 3 . Para os usurios/roles definidos como exemplo, caso seja fornecido o login fernando com senha jav a, apenas o link de usurios ser aceito; com o login lozano senha tomcat, apenas o segundo poder ser acessado. Se um usurio tentar acessar uma pgina que no esteja autorizado a acessar, ser exibida uma pgina de erro gerada pelo container (v eja a Figura 4) .
Listagem 2. Arquivo users.xml, que fornece logins, senhas e roles para o realm configurado
<?xml v ersion='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="administrador"/> <role rolename="usuario"/> <role rolename="manager"/> <role rolename="admin"/> <user username="admin" password="admin" roles="manager,admin"/> <user username="fernando" password="jav a" roles="usuario"/> <user username="lozano" password="tomcat" roles="administrador"/> </tomcat-users>
O leitor poder encontrar na internet exemplos de como fazer logout ou mudar o usurio em aplicaes web, utilizando as formas de autenticao previstas pelo protocolo HTTP, mas qualquer uma delas ir funcionar apenas com uma combinao especfica de navegador e servidor web. Ou ento ir exigir o controle efetivo da autenticao por meio de cookies, variveis de sesso ou outro mecanismo que dependa de cdigo de aplicao. Melhor ento utilizar a autenticao Form Based, entregando este trabalho ao container. Utilizando senhas criptografadas
O arquiv o users.xml, que fornece as senhas e roles para cada usurios no ltimo exemplo, contm as senhas em texto simples, sem criptografia. No recomendado, por questes de segurana e priv acidade dos usurios, que senhas estejam armazenadas em um lugar onde um inv asor ou mesmo o prprio administrador de sistema possa recuper-las. Felizmente todas as opes de realm fornecidas com o Tomcat possuem o atributo digester , que permite especificar um dos algoritmos de criptografia de mo-nica pela classe java.security.MessageDigest do JCE para criptografar a senha fornecida pelo usurio. A senha fornecida pelo usurio criptografada pelo container e comparada com a senha armazenada em forma criptografada pelo realm. Modifique ento o arquiv o server.xml conforme o trecho a seguir: <Realm className="org.apache.catalina.realm.Memory Realm" pa thnam e="conf/users.x m l" digester=MD5 /> Agora necessrio gerar as senhas criptografadas e armazen-las no users.xml. No seria difcil escrev er uma aplicao utilizando as classes do JC E para ler uma senha do teclado e fornecer sua forma criptografada (v eja o artigo de Bruno Souza nesta edio), mas o Tomcat j fornece tal utilitrio pronto para uso. necessrio acrescentar os pacotes bin/jmx.jar , bin/commong-loggin-api.jar e server/lib/catalina.jar ao classpath e ento executar a classe org.apache.catalina.realm.RealmBase. A seguir, um exemplo de uso deste utilitrio para criptografar a senha atribuda ao usurio fernando: > java org.apache.catalina.realm.RealmBase -a MD5 java jav a:93f725a07423fe1c889f448b33d21f46
A primeira linha a linha de comando; na opo -a indicado o algoritmo a ser utilizado (no caso, MD5); o argumento jav a a senha. A sada do programa uma linha de texto, fornecendo a senha original e a senha criptografada separados por um sinal de dois-pontos. A senha dev e ser ento copiada para o arquiv o users.xml, que fica semelhante Listagem 3 . Reinicie o Tomcat e v erifique se as senhas ainda so reconhecidas. importante ressaltar aqui que foram criptografadas apenas as senhas armazenadas no arquiv o users.xml (ou no banco de dados, ou diretrio LDAP, se forem adotadas outras opes de realms do Tomcat). A senha ainda est sujeita a captura em trnsito, pois no mecanismo HTTP Basic ela transmitida em texto puro (no-criptografado) para o serv idor web. Veja o quadro At onde a criptografia garante segurana? para uma discusso sobre como formas de ev itar esta v ulnerabilidade.
<user username="admin" password="21232f297a57a5a743894a0e4a801fc3" roles="manager,admin"/> <user username="fernando" password="93f725a07423fe1c889f448b33d21f46b" roles="usuario"/> <user username="lozano" password="1b359d8753858b55befa0441067aaed3" roles="administrador"/
As tabelas poderiam ser bem diferentes, pois os atributos do JDBCRealm permitem definir os nomes e campos das tabelas. Poderia haver campos adicionais de interesse da aplicao, como o nome e o e-mail do usurio.
O Tomcat 5 j fornece as classes do banco de dados embutido HSQLDB, que utilizado por alguns dos seus exemplos. Vamos aprov eitar esta facilidade para definir o banco de dados de usurios: 1. Acrescente as classes do HSQLDB ao classpath; elas esto em common/lib/hsqldb.jar , dentro da instalao do Tomcat. No Linux,
execute o comando: $ export CLASSPATH=$CLASSPA TH:$TOMCAT_HOME/common/lib/hsqldb.jar E no Windows: > set C LA SSPATH=%CLASSPA TH%;%$TOMC AT_HOME%\common\lib\hsqldb.jar
2.
Inicie o serv idor, onde /bd/users o nome do banco de dados, que ser criado automaticamente:
3.
Execute os scripts de criao das tabelas e dos usurios/roles de teste (digitando os comandos em uma linha):
4.
Verifique se as tabelas esto mesmo criadas e preenchidas, utilizando o Database Manager do HSQLDB (para isso, execute um comando
como select * from users): > jav a org.hsqldb.util.DatabaseManager -url jdbc:hsqldb:hsql://127.0.0.1 Com o banco de dados de usurios e roles preparado, modifique a definio do realm conforme a Listagem 6 . Lembre-se de remov er (ou comentar) a definio do realm criada anteriormente. Reinicie o Tomcat e teste o acesso s pginas da aplicao de exemplo. Tudo dev e funcionar como antes, mas utilizando o banco de dados em v ez do arquiv o users.xml. Experimente tambm alterar a senha do usurio no banco de dados, ou os seus roles associados; v erifique que a mudana reconhecida imediatamente. Observ e ainda que a mudana na autenticao, de um arquiv o XML para um banco relacional, no exigiu modificaes na aplicao nem em seu descritor web.xml. A s alteraes foram realizadas apenas no server.xml do Tomcat.
Listagem 5. Inserindo no banco os registros correspondentes aos usurios admin, fernando e lozano (usuarios.sql)
insert into users v alues ('admin', '21232f297a57a5a743894a0e4a801fc3'); insert into roles v alues ('admin', 'admin'); insert into roles v alues ('admin', 'manager'); insert into users v alues ('fernando', '93f725a07423fe1c889f448b33d21f46b'); insert into roles v alues ('fernando', 'usuario'); insert into users v alues ('lozano', '1b359d8753858b55befa0441067aaed3'); insert into roles v alues ('lozano', 'administrador');
Esta pgina s pode ser acessada por usurios autenticados <form method="post" action="j_security _check "> <table> <tr><td>Login:</td> <td><input size=15 name="j_username"> </tr> <tr><td>Senha:</td> <td><input ty pe="password" size=15 name="j_password"> </tr> <tr><td colpsan="2"><input ty pe="submit" v alue=" Ok "> </tr> </table> </form> </body > </html>
outra do nav egador. Portanto aps fechar o nav egador ser necessrio fazer um nov o login. Entretanto, o usurio permanece autenticado, tanto no mtodo Basic quando no mtodo Form, se ele sair da aplicao para v isitar outro site. Dessa forma ainda h margem para um usurio espertinho utilizar o login de outro usurio sem que ele o perceba. Nada substitui o treinamento dos usurios quando o assunto segurana. Exceto pela forma de se fazer o logoff, tudo o que foi v isto antes sobre autenticao HTTP Basic se aplica igualmente autenticao baseada em formulrios. A configurao do container web no afetada pelo mecanismo de autenticao da aplicao, assim as mesmas definies de realms do Tomcat e o uso de criptografia podem ser utilizados com os dois exemplos.
Single Sign-on Na configurao padro do Tomcat, cada aplicao web (ou contexto) mantm suas informaes de autenticao em separado, mesmo que todos os contextos utilizem um mesmo realm. Isso significa que se existirem v rias aplicaes web hospedadas no mesmo serv idor o usurio precisar fornecer nov amente o login e senha a cada v ez que mudar de aplicao. Tendo em v ista que a maioria das empresas organiza suas intranets como um conjunto de aplicaes web independentes, mas fazendo parte do mesmo portal, o usurio espera ter que digitar seu login e senha uma nica v ez, na primeira pgina restrita que for acessada (ou na primeira pgina v isitada na intranet). Para obter este efeito no Tomcat, dev e ser configurada no nv el do host a "v lv ula" (valve)4 de Single Sign-on (login nico). O seguinte exemplo ilustra a sintaxe deste elemento: <Valv e className= "org.apache.catalina.authenticator.SingleSignOn" /> Porm tome cuidado com a mistura de aplicaes que utilizam autenticao Basic e aplicaes que utilizam autenticao Form, pois as credenciais do usurio sero remov idas do container, mas no do nav egador web. Voc pode v erificar o efeito nos dois exemplos construdos neste artigo. Primeiro modifique o server.xml e reinicie o Tomcat; depois entre na aplicao jm-seguranca-j2ee-form (o segundo exemplo) e fornea as credenciais do usurio fernando. Entre na aplicao jm-seguranca-j2ee (primeiro exemplo) e depois na rea dos usurios. Veja que no ser pedida nenhuma informao de autenticao. Agora retorne para a aplicao jm-seguranca-j2ee-form. Faa o logoff e entre na pgina de usurios apenas para confirmar que a aplicao pede nov amente o login a senha; mas em v ez de clicar no boto "Ok " da pgina de login, retorne para o primeiro exemplo. Observ e que ele no ir pedir a senha para acessar as reas restritas. A recomendao portanto utilizar apenas aplicaes com autenticao baseada em formulrios no mesmo host do Tomcat. Isto ev ita o risco de um usurio achar que fez o logoff, enquanto que para o nav egador o login ainda esteja v lido. Quem o usurio corrente? A A PI de Serv lets fornece trs mtodos, caso a aplicao necessite tomar alguma deciso baseada em qual usurio esteja logado, todos da classe HttpServletRequest: ? getRemoteUser() retorna o nome do usurio fornecido na requisio HTTP, de modo que ele s relev ante se for utilizado algum
mecanismo de autenticao gerenciado pelo serv idor web. C aso seja utilizada autenticao baseada em formulrios, este mtodo sempre retornar null. ? getUserPrincipal() retorna um objeto da classe java.security.Principal, que encapsula o usurio autenticado pelo container. Este
mtodo funciona com qualquer mecanismo de autenticao. ? isUserInRole() informa se o usurio correntemente autenticado est ou no associado ao role cujo nome passado como argumento.
Veja que no so fornecidos mtodos para listar os usurios existentes, nem para listar os roles aos quais o usurio est associado. Mesmo assim, os dois ltimos so suficientes para qualquer situao que se apresentar. O getRemoteUser() dev e ser ev itado, j que ele no se aplica autenticao baseada em formulrios, mas pode ser substitudo em qualquer situao pelo segundo mtodo, getUserPrincipal() .
Lgica condicional como scriptlets em pginas JSP tendem rapidamente a ficar de difcil leitura, como na Listagem 12 . Considere nestes casos
utilizar a JSTL.
A pgina autentica.jsp simples; ela apenas redireciona o nav egador de volta para a pgina de ndice: <% // neste ponto a autenticao j foi feita pelo container response.sendRedirect(request.getContextPath()); %> Para que a aplicao funcione como desejado, dev e ser acrescentada uma nov a regra de controle de acesso ao descritor web.xml, apresentada na Listagem 13 . A Figura 7 ilustra como o login nesta aplicao funciona sob o ponto de v ista do usurio. O nome * para um role indica que qualquer role aceito, ou seja, que as URLs relacionadas podem ser acessadas por qualquer usurio autenticado. No definir uma regra de controle de acesso significa que usurios annimos podem acessar a pgina sem fornecer nenhuma senha. As outras regras de controle de acesso dev em ser mantidas; caso contrrio ser fcil burlar a segurana da aplicao. Qual a v antagem de se utilizar a segurana declarativ a neste caso, onde o usurio obrigado a passar por uma pgina de login antes de poder ter acesso a qualquer outra pgina da aplicao? A principal v antagem v em do fato que o usurio no pode pular a pgina de login fornecendo diretamente uma URL. Se no fosse utilizada a segurana declarativ a do J2EE, seria necessrio inserir em cada pgina um teste para v erificar se o usurio j fez o login, ou configurar um filtro (java.servlet.Filter ) para fazer essa v erificao em todas as pginas. Outra v antagem que o usurio pode salv ar nos "favoritos" do seu nav egador a URL para uma pgina qualquer, e o container automaticamente exibir a pgina de login, poupando ao usurio alguns cliques adicionais at chegar a pgina desejada.
Listagem 12. Pgina de ndice (index.jsp) do terceiro exemplo, jm-seguranca-j2ee-proc , ilustrando o uso dos mtodos para segurana procedural na API de Servlets
<html><body > <h1>Demo de Segurana J2EE (Procedural)<hr></h1> <% if (request.getUserPrincipal() == null) { %> <p> <a href="autentica.jsp">Entrar no Sistema</a> <% } else { %> <p> Bem-v indo, usurio <%= request.getUserPrincipal().getName() %> <% if (request.isUserInRole("usuario")) { %> <p> <a href="usuarios/">Pginas dos usurios</a> <% } if (request.isUserInRole("administrador")) { %> <p> <a href="admin/">Pginas dos administradores</a> <% } %> <p> <a href="logoff.jsp">Logoff</a> <% } %> </body ></html>
Listagem 13. Modificaes no descritor web.xml para que um acesso a pgina autentica.jsp provoque a exibio da pgina de login
<security -constraint> <web-resource-collection> <web-resource-name>Fora a Atenticao</web-resource-name>
formulrio na pgina inicial (Listagem 14 ) utilize como seu action uma pgina restrita (no caso autentica.jsp , a mesma do exemplo anterior). Os campos do formulrio de login estaro disponv eis para a pgina de login do container (pois ela parte da mesma requisio HTTP). Esta pgina contm cdigo Jav aScript no ev ento onLoad do corpo da pgina (body) para prov ocar a submisso imediata do formulrio (Listagem 15 ). Note que os campos obrigatrios foram definidos como campos escondidos (hidden). A Figura 8 ilustra a nav egao de um usurio pelo quarto exemplo, jm-seguranca-j2ee-box. Observ e a caixa na parte direita das pginas, que pode ou exibir um formulrio de login ou o nome do usurio autenticado.
<% request.getSession().setAttribute("pagina", request.getRequestURL()); %> <h1>Demo de Segurana J2EE (Box)<hr></h1> <p> Autenticando usurio... <form method="post" action="j_security _check "> <input ty pe="hidden" name="j_username" v alue="<%= request.getParameter("login") %>"> <input ty pe="hidden" name="j_password" v alue="<%= request.getParameter("senha") %>"> </form> </body ></html>
nunca serem consultados ou modificados pela aplicao. Tambm espera-se que uma aplicao no use este prefixo nos seus nomes de atributos; [4]- Valve um componente do Tomcat configurado para atuar como filtro em requisies http recebidas pelo container. O seu uso mais comum salv ar informaes sobre a requisio em logs de acesso ou de erros, mas poderia ser feita qualquer modificao sobre a requisio ou sobre sua resposta.
A t onde a criptografia garante a segurana? O a tributo digest dos rea lm s do Tom cat rea liza a criptografia das se nha s arm a zena das no servidor; e le no afe ta as senhas digita das no nave gador e transm itidas pela requisi o HTTP a t o se rvido r. Se for utilizado o m e ca nism o Ba sic, um sniffe r de rede conse guiria m ostrar a senha digitada pe lo usurio. Ainda assim importante criptografar a senha, no pela segurana da aplicao, mas pela priv acidade dos usurios. Em geral as pessoas utilizam a mesma senha (ou um pequeno conjunto de senhas) tanto dentro quanto fora da empresa. Ningum gostaria de saber, claro, que seria possv el ao administrador da rede ou DBA v er sua senha na aplicao web e utiliz-la para acessar seu e-mail, internet bank ing ou outra aplicao. Utilizar o mecanismo HTTP Digest em v ez de HTTP Basic melhora um pouco a situao, mas nem tanto. Com o mecanismo HTTP Digest, a senha criptografada no nav egador antes do env io para o serv idor. Infelizmente muitos nav egadores no suportam esse mecanismo, e a especificao J2EE no exige que ele seja suportado. Mesmo se v oc utilizar um par nav egador/serv idor web que suporte o HTTP Digest, ainda assim a senha criptografada poder ser capturada em trnsito e posteriormente retransmitida, sendo aceita pelo serv idor, de modo que no hav er necessidade de descriptograf-la. Isso chamado de ataque de replay , pois a repetio de parte do contedo de um pacote suficiente para o inv asor. (Note que esta descrio foi uma grande simplificao do mecanismo e de seus riscos.) Para o leitor preocupado com os riscos que suas senhas correm em intranets e na internet, saiba que as mesmas v ulnerabilidades esto presentes na grande maioria das aplicaes de rede, sejam sistemas de compartilhamento de arquiv os NFS, Windows ou Netware, serv idores de e-mail ou bancos de dados. sabido que segurana no uma questo absoluta (seguro ou no-seguro); algo relativ o. Um sistema pode ser mais ou menos seguro do que o outro, mas todos sero em algum grau inseguros. Uma soluo mais forte dev e utilizar algum mecanismo de autenticao distribuda construdo para ev itar estes riscos, como o Kerberos. Infelizmente o padro HTTP no define nenhuma maneira de utilizar o Kerberos ou similares como mecanismo de autenticao. Outra soluo o uso do protocolo SSL (https://), pelo menos para a pgina de login, pois ele no sujeito a ataques de replay . Vrios sistemas utilizam cdigo Jav aScript no nav egador para criptografar a senha antes da sua transmisso. Neste caso a autenticao feita pelo cdigo da aplicao, no pelo serv idor ou container web. Estes sistemas sofrem dos mesmos riscos que o HTTP Digest (em geral sofrem mais riscos, pois o Digest ao menos tenta ev itar os ataques mais simples de replay ). Portanto complicam a aplicao sem realmente aumentar o nv el de segurana. O risco de se ter uma senha capturada por sniffing (captura de pacotes) na prtica relativ amente baixo. A captura teria que ser feita na rede local do usurio (o que dificultado pelo uso crescente de switches Ethernet), nos roteadores das empresas e prov edores de acesso, ou nos prprios serv idores, significando que j houv e um ataque bem-sucedido, ou que h um funcionrio mal-intencionado em alguma das empresas env olv idas a sua, a empresa do usurio remoto, ou um dos prov edores de acesso e de back bone. O risco bem maior no caso de v rus que instalam monitores de teclado, pginas que imitam aplicaes de home bank ing ou de comrcio eletrnico, usurios que escolhem senhas fceis (o inv asor adv inha as senhas, em v ez captur-las) e usurios que aceitam facilmente tcnicas de engenharia social, dizendo suas senhas ao telefone para qualquer um que afirme ser, por exemplo, um diretor ou tcnico de suporte da empresa.
Links
onjava.com/pub/a/onjava/2002/06/12/form.html
Sobre o mecanismo de autenticao Form definido na especificao de Serv lets
ietf.org/rfc/rfc2068.txt
RFC do IETF que descrev e o protocolo HTTP e seus mecanismos de autenticao
ietf.org/rfc/rfc2069.txt
RFC do IETF que descrev e o mecanismo de autenticao Digest do HTTP
jcp.org/en/jsr/detail?id=154
Especificao de Serv lets, onde so definidos os elementos de autenticao e controle de acesso no web.xml
jak arta.apache.org/tomcat/tomcat-5.0-doc/realm-howto.html
Documentao sobre realms do Tomcat 5
Fernando Lozano (fernando@lozano.eti.br, www.lozano.eti.br ) consultor independente, atuando h mais de dez anos em projetos de integrao de redes, desenv olv imento de sistemas e tuning de bancos de dados. tambm um antigo ativ ista do software liv re, conselheiro do