Dicas: Um pouco de paranóia

2007 February 12, 07:48 h

Javascript está no centro das atenções com a atual moda de Ajax. Claro, todos sabemos que não há nada de novo em Ajax, afinal já brincávamos com requisições desse tipo desde pelo menos 2000. A diferença é que agora deram um nome ao conjunto de Javascript+MSXML/XmlHttpRequest.

Porém, a todos os web developers por aí, não custa dar uma atenção um pouco maior ao assunto. Javascript ainda é algo polêmico: código que roda no seu browser sem chamar a atenção. Nada que não chame a atenção e execute pelas minhas costas é agradável. Diversas formas de ataque já foram criadas usando Javascript. Cross-site Scripting (XSS) é apenas uma delas. Alguns meses atrás falou-se muito sobre portscans via Javascript e um exploit em routers Linksys (que tem interface de administração HTTP) e como resetar a senha, desativar a proteção WEP, etc.

A maioria desses exploits conhecidos, claro, foram corrigidos, o que não significa que todos os proprietários desses routers específicos se deram ao trabalho de baixar e instalar a atualização de firmware. Para nós web developers o problema não é que nosso site ou aplicação web terá um exploit mas sim que usuários conscientes, que costumam desativar o Javascript de seus browsers, terão problemas ao acessar uma aplicação que dependa de Ajax para funcionar.

No meu livro, Repensando a Web com Rails, descrevi as funcionalidades de Rails para Ajax (RJS, funcionalidade magnífica, diga-se de passagem) como também gastei um bom tempo explicando como desenvolver Ajax com o cuidado de se ter um “fallback”, ou seja, um tratamento caso o Javascript esteja desativado.

Desenvolvedores novatos costumam fazer da seguinte forma: “se o usuário não tiver Javascript, não merece usar minha aplicação”. Acho que é o contrário: “sites que não tem fallback para noscript não merecem ser visitados”. Portanto a regra é: use Ajax, mas deixe um fallback preparado que NÃO DEPENDA de scripts de nenhum tipo, ou seja, que funcione somente com HTML e submits normais de forms, trazendo a página toda, como sempre fizemos. Usuários conscientes que sabem configurar Trusted Sites e confiarem em você e em seu site terão todos os benefícios do seu Ajax, e usuários que não tem certeza podem deixar scripts desativados e ainda conseguir usar as funcionalidades do seu site.

Um bom exemplo disso? O GMail funciona dessa forma. Experimente desligar scripts e entrar no Gmail. Ele não terá toda a dinamicidade que estamos acostumados mas mesmo assim você conseguirá fazer o básico: consultar seus e-mails, responder, enviar, apagar, etc. É assim que se faz um bom aplicativo. Falando em Gmail, para quem não sabe você pode acessar todos os seus e-mails com um pouco mais de segurança digitando manualmente o link https://mail.google.com (note o http*S*, que vai abrir o Gmail com SSL ativado).

Para usuários de Firefox, recomendo a instalação do plugin noscript para que se possa seletivamente escolher quais sites são confiáveis o suficiente para rodar scripts em nossas máquinas.

Existem vários outros sites discutindo o assunto Degradable Ajax e aconselho que eles também sejam pesquisados. Sempre comece desenvolvendo sem absolutamente nenhum script, sem manipulações de DOM, usando tags a e input e raramente divs. Depois que tudo funcionar acrescente suporte a Ajax, detecte se o browser apresenta scripts habilitados e então configure todos os eventos dinâmicos.

E não é apenas Javascript: ActiveX é nosso velho conhecido por rodar qualquer código fora de um sandbox, também deve ser absolutamente evitado. Applets Java são raros hoje e eles costumam rodar em sandbox, mas se você não precisa deles, desabilite. Mesmo Flash e Shockwave são software e, por definição, estão sujeitos a bugs e futuros exploits, portanto se você não precisa deles, desabilite. Repetindo, você não precisa desabilitar tudo, utilize os recursos de Trusted Sites , se usar Internet Explorer ou a extension noscript no Firefox.

Aproveitando o assunto, espero que todos tenham sempre um firewall de pé (seja um hardware firewall, aqueles routers que tem firewall ou, no mínimo do mínimo o próprio Windows Firewall que vem no XP Service Pack 2). Você não usa? Com quase 100% de certeza seu micro já foi atacado. Atualmente um micro zerado, colocado na internet sem proteção não aguenta mais do que poucos minutos sem ser atacado.

Quem não tem um bom firewall pode instalar o Comodo, Kerio ou Zone Alarm. Anti vírus também são importantes como o AVG, AOL Active Virus Shield (derivado do Kaspersky). Esqueçam os bloated-software como Norton e McAfee. Outra coisa importante: anti-spywares como o Windows Defender e SpyBot ajudam um pouco. Mas nada disso adianta se seus browsers estão escancarados, por isso mesmo sigam as recomendações acima.

Para os mais paranóicos como eu, atualmente estou carregando HDs externos, etc. Isso me deixa nervoso pois alguém poderia me roubar e ter acesso a dados sigilosos pessoais e de clientes, por isso mesmo estou usando o File Vault no meu Mac para encriptar toda minha pasta Home. Na minha partição Boot Camp de Windows XP uso EFS para encriptas pastas específicas. E estou usando TrueCrypt no meu HD externo para criar uma partição encriptada.

Todo cuidado é pouco. Se roubarem meu iPod não tem nenhum problema em verem quais música escuto, mas se eu levo dados no iPod com certeza estarão encriptados por TrueCrypt. Mesmo se roubarem meu note, colocarem o HD em outra máquina para ultrapassarem as permissões tanto do Unix do Mac quanto do Windows, ainda assim os dados sigilosos estarão em uma imagem encriptada muito difícil (impossível para um mero ladrão de esquina) de ser quebrada.

Claro, não existe segurança absoluta. Ninguém está totalmente seguro não importa o que faça, a única coisa que podemos fazer é minimizar os riscos. Usando senhas fortes, sistemas de criptografia, aplicando todos os patches de segurança, fechando todas as portas de comunicação com o mundo extenro. Mesmo assim, sempre há software no meio do caminho, portanto sempre haverá um bug esperando para ser explorado. Como não podemos nos dar ao luxo de ficar completamente offline da Internet, temos que saber como lidar com a sujeira.

Essas foram apenas algumas poucas dicas de uma tonelada de outras. No fim: pesquise, há um exploit novo todo dia esperando para atacá-lo. E, claro, faça backups em um HD/computador externo, na sua casa, sempre, de maneira automatizada, você nunca sabe quando vai precisar disso – perder 5 anos de e-mails, por exemplo, nunca é agradável.

tags: obsolete javascript

Comments

comentários deste blog disponibilizados por Disqus