Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina

sexta-feira, 31 de agosto de 2007

Você é um Humano?

Olá pessoal!

Muitas são as razões para se exigir alto grau de segurança num sistema, que vão desde a movimentação de valores num sistema bancário até a privacidade de informações de seus clientes.

Na busca por mais segurança, os desenvolvedores utilizam métodos para verificar se o usuário que está acessando o sistema ou recurso é um humano ou não. Os testes que têm como objetivo diferenciar um humano de uma máquina são chamados de Testes de Turing, criado pelo famoso cientista da computação Alan Turing.

Certamente, diferenciar um humano de uma máquina com eficiência aumenta o grau de segurança de uma aplicação. O problema é que há fatores importantes que devem ser levados em consideração na aplicação desses testes. O principal deles, na minha opinião, é a acessibilidade.

Também precisamos levar em consideração a eficiência dos testes. Sempre que há desenvolvedores buscando soluções de segurança, existem outros buscando meios de burlar a segurança. E quanto mais atrativo for o sistema para utilização criminosa, mais recursos serão despreendidos para quebrar a segurança.

Neste artigo, vou mostrar algumas alternativas para Testes de Turing.

Captcha

O mais famoso Teste de Turing aplicado na WEB certamente é o CAPTCHA. Um tipo comum de CAPTCHA é o uso de letras e números distorcidos sobre uma plano de fundo.

Existem muitos sistemas de Inteligência Artificial que foram desenvolvidos com o intuito de ler as imagens através de computadores e passar por essas barreiras de segurança. O mais impressionante é que normalmente os captchas que podem ser entendidos por humanos são quebrados por esses sistemas com um alto grau de eficiência - a maior parte dos captchas é quebrada em mais de 80 das tentativas. Assim, a sensação de segurança com a utilização de captcha normalmente é só uma sensação, pois, se o seu sistema realmente interessar, será despreendido tempo e recursos para a quebra de segurança.

Não quero, com isso, dizer que não há captchas eficientes. Existem captchas que até hoje nunca foram quebrados e provavelmente nunca serão, devido a sua complexidade.

O problema da complexidade é que muitos humanos também terão dificuldade de entender a imagem e acessar o sistema. Falando em acesso, pense num usuário cego se cadastrando num site que tenha captcha Ele simplesmente não conseguirá se cadastrar e será marginalizado pelo sistema. Agora imagine que esse site seja da Receita Federal. Uma parte da população não poderá acessar um serviço público.

Esse problema pode ser contornado com a utilização de captchas sonoros combinados aos visuais. Mas se você conseguiu fazer um captcha visual eficiente, certamente terá muito mais dificuldade para ter a mesma eficiência com sons. Isso porque distorcer um som para impedi-lo de ser entendido por sistemas de reconhecimento de voz fará com que também fique difícil para humanos entender.

Também cabe sempre pensar nos usuários de navegadores baseados em texto.

Se decidir por utilizar CAPTCHA, tenha em mente que seu sistema terá a acessibilidade comprometida e que não estará 100 livre de invasores. Muito pelo contrário: se o invasor tiver muito interesse em acessar de forma automática, ele não enveredará esforços para conseguir exito e muito provavelmente conseguirá.

Testes de Lógica

Este tipo de teste também vem crescendo na WEB. Trata-se de uma pergunta que tem somente uma resposta lógica. Exemplo: Qual dessas palavras é um nome de homem? Armário, Carro ou João?.

Bastante interessante, não? É uma pergunta fácil de ser respondida por um humano porém difícil de ser respondida por um computador.

Se a pergunta não admitir somente uma resposta de múltipla escolha, como no exemplo acima, o sistema deve permitir flexibilidade de maiúsculas/minúsculas, acentos, espaços a mais, pontuação, etc.

Mas há desvantagens.

1. Você terá que ter um arsenal de milhares de perguntas e respostas. Imagine que você cadastre 100 perguntas e suas respectivas respostas. Em questão de minutos um computador testará todas as possibilidades e as cadastrará para futuro uso. Mesmo que não seja possível automatizar os testes com um computador, um humano pode responder às perguntas e ensinar ao computador as respostas.

2. Esse método também tem problemas de acessibilidade. Existem pessoas que têm problemas de cognição ou dislexia. Além disso, há os visitantes de outros países.

Verificação por e-mail

É um método interessante. O usuário cadastra-se através de um formulário comum mas a sua conta fica desabilitada até que o usuário confirme sua inscrição através de um e-mail enviado pelo sistema para o endereço cadastrado.

Embora dificulte, não impede. Se um humano completar o cadastro do robô, posteriormente ele (o robô) poderá acessar o sistema através de login automático.

A grande vantagem desse método é que ele é completamente acessível. Além disso, é simples de implementar.

Identificação por Documentos

Outra forma simples de implementar e acessível é a identificação do usuário por documentos (Identidade, CPF, cartão de crédito, etc). Esse método se assemelha ao anterior pela facilidade de implementação e da quebra de segurança.

Outro fator a ser levado em consideração é a segurança das informações dos usuários cadastrados e o uso de documentos de terceiros.

Coleta de Perfil

Uma forma complexa é a formação de um perfil de utilização do sistema para cada usuário. Muito utilizado por sistemas financeiros de instituições bancárias, consiste em monitorar os passos do usuário e estabelecer padrões de uso.

Digamos que você acessa o site do seu banco e faz sempre movimentações baixas, paga sempre os mesmos boletos, etc. Um dia outro usuário se faz passar por você e paga um título estranho de um valor alto, ou faz uma transferência para uma conta estranha. O sistema detecta que pode estar acontecendo uma invasão e alerta o administrador do sistema, que faz a investigação e toma as medidas necessárias.

Eu conheço usuários que já tiveram suas contas bloqueadas porque os administradores do sistema bancário identificaram a invasão antes que houvesse alguma fraude.

Como desvantagens, vejo o alto custo do sistema, monitoração de alertas, etc. Além disso, há um tempo necessário para a correta coleta do perfil do usuário. Essas desvantagens inviabilizam a utilização da coleta de perfil na maior parte dos sistemas WEB.

Chat ou Telefone

Imagine tentar acessar um serviço que requer segurança e, antes do acesso, ser submetido a um chat com um operador, para que você confirme que é um humano ou que você é o dono da conta.

Interessante, não?

Esse sistema é utilizado por alguns sites, que requerem que, após uma transação, você confirme através de telefone ou chat que realmente deseja continuar a transação.

Mais um sistema eficiente. Mais um sistema que é inviável, na maior parte das vezes, pelo alto custo.

Limitação de Utilização

Ainda tomando como exemplo sistemas financeiros, o seu sistema ter cotas de utilização. Exemplos:

1. Mandar 20 mensagens por dia.

2. Comprar no máximo R500,00 por dia.

A desvantagem é que torna-se necessário um estudo detalhado para estabelecimento de cotas que permitam aos usuários corretos utilizar o sistema de forma satisfatória. O sistema também deve prever forma de contornar as cotas. Além disso, sempre haverá usuários que acharão que as cotas foram mal estabelecidas e ficarão insatisfeitos.

Conclusão

Vimos que um sistema infalível é difícil e custoso. Vimos principalmente que, ao contrário do que muitos pensam, CAPTCHA não é seguro, mas funciona para invasores inexperientes ou com poucos recursos.

O importante é levarmos em consideração a acessibilidade dos nossos sistemas. Pensar na parcela dos usuários que serão excluídos.

Seja criterioso na escolha do sistema Você é um humano?. Pense nos prós e contras, nas medidas para diminuir ou neutralizar os contras e, se os contras ainda existirem, se vale a pena conviver com eles.

Por: Thiago Ferreira é formado em Análise de Sistemas pela Universidade Salgado de Oliveira. Trabalha desde 2005 com desenvolvimento WEB

quinta-feira, 30 de agosto de 2007

Google Web Toolkit simplifica desenvolvimento Ajax

Novo serviço gratuito do Google ajuda os programadores a trabalharem com Ajax. Transforma programas em Java para web, faz a interface, o JavaScript, integra com CSS... Entenda a lógica da oferta.


Ajax é uma maravilha, mas que dá muito trabalho para programar e por isso, em alguns casos, não é uma boa opção porque pode ficar caro. Bem, talvez eu já não fale mais isso. Explico: o Google lançou um novo serviço que ajuda os programadores a trabalharem com Ajax. É o Google Web Toolkit.

Os problemas de se programar com Ajax

Os programadores, inclusive os do Google, dizem que desenvolver um programa em Ajax, como o Gmail, por exemplo, é um muito chato, pois perde–se muito tempo com bobagens. Isso porque HTML não é exatamente uma linguagem de programação, nem CSS; então, para fazer programas que funcionam pela internet (utilizando Ajax, para funcionar rapidamente) é preciso utilizar o JavaScript.

Aí começam os problemas. JavaScript não é uma linguagem de programação robusta. É cheia de detalhezinhos chatos que podem fazer um programador passar horas para solucionar um problema que seria muito simples em uma linguagem de programação melhor. Além disso, sabe lá Deus porque, cada navegador interpreta o JavaScript de formas diferentes. Então, o coitado do programador, além de agüentar as frescuras de uma linguagem que não é lá essas coisas, acaba tendo que fazer programas específicos para cada navegador. Ou em um detalhezinho da programação, fazer de um jeito para o Internet Explorer e de outro para o Firefox.

Isso ficando somente nestes dois, os mais importantes no momento. Mas para quem se preocupa com acessibilidade mesmo, de verdade, ainda há o Opera, o Safari, entre vários outros. Sinceramente, não dá pra ficar programando e testando em cada navegador, resolvendo os problemas de cada um, etc. Isso é terrivelmente chato e demorado − acredite em mim. Depois que apareceu o Ajax eu ouço muito mais murros na mesa, vindos do pessoal da programação.

Além disso, o programador ainda tem que coordenar quantos scripts serão carregados, para o site não ficar pesado, e quando cada um será carregado. Em alguns navegadores, se o usuário clicar em um botão − que vai fazer algo no programa usando JavaScript − antes da página estar completamente carregada, o navegador pára de carregar o script e dá tudo errado. Vai novamente o programador correr atrás de uma solução…

Como o Google Web Toolkit ajuda

Mas, talvez, tudo isso seja algo que fique no passado, quando nós tínhamos que nos preocupar com essas coisas. Os programadores do Google trabalharam muito com Ajax, fazendo o Gmail, o Google Calendar, o Google Maps, o Google Suggest (ok, já parei…) e puderam sentir na pele os problemas que o Ajax traz.

Para resolver isso eles desenvolveram um framework que os ajuda a programar com Ajax. Eles fizeram isso para o uso deles, para os próprios programadores do Google serem mais produtivos, passando mais tempo jogando hockey ou indo às mini–cozinhas do Googleplex e menos tempo se irritando com os problemas malucos dos navegadores. Mas então alguém lá dentro teve a brilhante idéia de liberar isso para todos os usuários. Esse é o Google Web Toolkit.

Agora funciona assim: o programador pode fazer todo o seu programa em Java, que é uma linguagem muito madura e robusta, mais ou menos como se estivesse desenvolvendo um programa local, e depois o GWT (Google Web Tookit) transforma este programa em web, fazendo a interface, o JavaScript, integrando tudo com o CSS etc. E faz tudo funcionar direitinho em todos os browsers, coordena os scripts, faz da forma mais leve e melhor para o usuário possível.

Outra coisa interessante é que o GWT dá várias bibliotecas de eventos prontos. Então, várias funcionalidades interessantes do Ajax ficaram a meia dúzia de letras de distância do programador, em vez de horas de programação. É como se você pudesse pegar um pedaço do código de alguém e usar

Entenda o que é a Web 2.0

O termo Web 2.0 é utilizado para descrever a segunda geração da World Wide Web --tendência que reforça o conceito de troca de informações e colaboração dos internautas com sites e serviços virtuais. A idéia é que o ambiente on-line se torne mais dinâmico e que os usuários colaborem para a organização de conteúdo.

Dentro deste contexto se encaixa a enciclopédia Wikipedia, cujas informações são disponibilizadas e editadas pelos próprios internautas.

Também entra nesta definição a oferta de diversos serviços on-line, todos interligados, como oferecido pelo Windows Live. Esta página da Microsoft, ainda em versão de testes, integra ferramenta de busca, de e-mail, comunicador instantâneo e programas de segurança, entre outros.

Muitos consideram toda a divulgação em torno da Web 2.0 um golpe de marketing. Como o universo digital sempre apresentou interatividade, o reforço desta característica seria um movimento natural e, por isso, não daria à tendência o título de "a segunda geração". Polêmicas à parte, o número de sites e serviços que exploram esta tendência vem crescendo e ganhando cada vez mais adeptos.

Confira um glossário da Web 2.0 elaborado pela Folha de S.Paulo

AdSense: Um plano de publicidade do Google que ajuda criadores de sites, entre os quais blogs, a ganhar dinheiro com seu trabalho. Tornou-se a mais importante fonte de receita para as empresas Web 2.0. Ao lado dos resultados de busca, o Google oferece anúncios relevantes para o conteúdo de um site, gerando receita para o site a cada vez que o anúncio for clicado

Ajax: Um pacote amplo de tecnologias usado a fim de criar aplicativos interativos para a web. A Microsoft foi uma das primeiras empresas a explorar a tecnologia, mas a adoção da técnica pelo Google, para serviços como mapas on-line, mais recente e entusiástica, é que fez do Ajax (abreviação de "JavaScript e XML assíncrono") uma das ferramentas mais quentes entre os criadores de sites e serviços na web

Blogs: De baixo custo para publicação na web disponível para milhões de usuários, os blogs estão entre as primeiras ferramentas de Web 2.0 a serem usadas amplamente

Mash-ups: Serviços criados pela combinação de dois diferentes aplicativos para a internet. Por exemplo, misturar um site de mapas on-line com um serviço de anúncios de imóveis para apresentar um recurso unificado de localização de casas que estão à venda

RSS: Abreviação de "really simple syndication" [distribuição realmente simples], é uma maneira de distribuir informação por meio da internet que se tornou uma poderosa combinação de tecnologias "pull" --com as quais o usuário da web solicita as informações que deseja-- e tecnologias "push" --com as quais informações são enviadas a um usuário automaticamente. O visitante de um site que funcione com RSS pode solicitar que as atualizações lhe sejam enviadas (processo conhecido como "assinando um feed"). O presidente do conselho da Microsoft, Bill Gates, classificou o sistema RSS como uma tecnologia essencial 18 meses atrás, e determinou que fosse incluída no software produzido por seu grupo

Tagging [rotulação]: Uma versão Web 2.0 das listas de sites preferidos, oferecendo aos usuários uma maneira de vincular palavras-chaves a palavras ou imagens que consideram interessantes na internet, ajudando a categorizá-las e a facilitar sua obtenção por outros usuários. O efeito colaborativo de muitos milhares de usuários é um dos pontos centrais de sites como o del.icio.us e o flickr.com. O uso on-line de tagging é classificado também como "folksonomy", já que cria uma distribuição classificada, ou taxonomia, de conteúdo na web, reforçando sua utilidade

Wikis: Páginas comunitárias na internet que podem ser alteradas por todos os usuários que têm direitos de acesso. Usadas na internet pública, essas páginas comunitárias geraram fenômenos como a Wikipedia, que é uma enciclopédia on-line escrita por leitores. Usadas em empresas, as wikis estão se tornando uma maneira fácil de trocar idéias para um grupo de trabalhadores envolvido em um projeto.

Problemas com a instalçao do Apache+Php+Mysql Seus problemas acabaram com WAMP5

Instalação do Wamp5

Existe um pacote de instalação chamado WAMP5 que pode instalar em conjunto Apache, PHP 5, MySQL e PHPMyAdmin. Neste capítulo, ainda nos referimos à forma de instalação de WAMP5 e outras opções para aumentar as possibilidades do pacote.


Existe uma maneira de começar a utilizar PHP5 em Windows sem ter que sofrer as complicações típicas da instalação dos servidores necessários para programar em PHP. Trata-se de instalar um pacote chamado WAMP, que permite instalar e configurar em um só processo o servidor Apache, a base de dados MySQL e o módulo de programação em PHP versão 5.

WAMP é um sistema indicado para os usuários que não têm instalado no sistema nenhum dos programas necessários para programar em PHP (Apache, PHP e MySQL), já que realiza uma instalação completa e desde zero. Mas também podem utilizar este programa os usuários que dispõem de Apache, PHP e/ou MySQL em seu sistema. Em cujo caso, simplesmente se realizará outra cópia das aplicações em um diretório distinto, que à princípio, não tem porque interferir com as outras instalações alojadas em nosso computador.

Programas que contem WAMP5

O software que se instala com WAMP5 contem os seguintes servidores e programas:
  • Apache 1.3.31. O servidor de páginas web mais difundido do mercado. Embora a última versão deste servidor seja Apache 2, instala-se uma versão anterior que é mais estável. Existe um Add-on que permite substituir a versão 1.3.31 de Apache pela última versão.
  • PHP5. O motor renovado da linguagem.
  • MySQL. A base de dados mais difundida para utilizar com PHP.
  • PHPmyadmin. Um software que permite administrar uma base de dados através de uma interface web.
  • SQLitemanager. Um sistema para administrar uma base de dados a partir de sentenças SQL.
Instalação de WAMP

A instalação se realiza através de um executável Windows onde podem se introduzir poucas configurações, apenas o diretório onde desejarmos que se instalem os programas. Depois do processo de instalação foram criados dois serviços com o servidor web e o de base de dados:
  • Serviço wampapache: Relacionado com o servidor Apache.
  • Serviço wampmysql: Relacionado com a base de dados MySQL.
Ademais, dentro do diretório onde tivermos instalado WAMP5 terá sido criado uma pasta chamada "www", que corresponde com o diretório de publicação, ou seja, o lugar onde devem ser colocadas as páginas web.

Durante a instalação também devemos decidir se desejamos que WAMP5 se inicie automaticamente ao ligar o computador ou se desejamos que seu funcionamento se realize manualmente.

Funcionamento dos servidores

Quando instalamos WAMP5 se cria um grupo de programas chamado WampServer, onde poderemos encontrar uma opção que põe "Start Wampserver", que será necessário executar se não tivermos selecionado que o servidor se inicie automaticamente.

Uma vez o WampServer em funcionamento obteremos um ícone na barra de tarefas com a forma parecida a de um marcador de velocidade. Se clicarmos sobre esse ícone, abrirá um menu com opções variadas para providenciar os serviços relacionados com o pacote. A imagem abaixo mostra esse menu.



Podemos provar se os serviços estão funcionando perfeitamente acessando à página de início do servidor, escrevendo na barra de endereços de nosso navegador algo como http://localhost/.

Então deverá aparecer uma página com vários links às distintas ferramentas instaladas com WAMP5, além de algumas páginas de proba de PHP.

Add-ons

Existem vários acréscimos que podem ser instalados com WAMP, para ampliar as possibilidades do pacote. Por exemplo, podemos instalar um add-on para permitir que WAMP trabalhe com PHP5 ou com PHP4, criando una nova opção no menu de WAMP5 que permite mudar de uma versão a outra de PHP.

Existem outros acréscimos disponíveis:
  • Instalar ActiveState Perl em nosso sistema, para permitir a execução de CGI.
  • Atualizar a versão de Apache 2.
  • Instalar Zend Optimizer, para melhorar o comportamento em tempo de execução de PHP.
  • Por último, o add-on que instala Webalizer, um sistema para obter estatísticas de uso do servidor web.
Pode-se obter mais informação deste sistema e opções para download na página http://www.en.wampserver.com/

Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina