segunda-feira, 18 de setembro de 2017

Configurando o Selenium para o Node no Ubuntu

1) Instale o Node
2) Instale o pacote selenium-webdriver
npm install selenium-webdriver

3) Instale os drivers do browser que deseja trabalhar
3.1) Para instalar Firefox (geckodriver) no Ubuntu, siga os passos:
3.1.1) Ache a ultima versão do driver para a plataforma e faca o download:
wget https://github.com/mozilla/geckodriver/releases/download/v0.19.0/geckodriver-v0.19.0-linux64.tar.gz

3.1.2)  Descompacte o arquivo:
tar -xvzf geckodriver*

3.1.3) Faca ele ser executável
chmod +x geckodriver

3.1.4) Deixe ele disponível nos binários locais:
sudo mv geckodriver /usr/local/bin/

3.2) Para instalar Chrome Driver no Ubuntu, siga os passos:
3.2.1) Instale o unzip:
sudo apt-get install unzip

3.2.2) Ache a versão do driver para a plataforma compativel com sua versao do Chrome(Lembrando que nem todo driver e compativel com a versao do Chrome) e faca o download:
wget http://chromedriver.storage.googleapis.com/2.25/chromedriver_linux64.zip

3.2.3) Descompacte o arquivo:
unzip chromedriver_linux64.zip

3.1.3) Faca ele ser executável
chmod +x chromedriver

3.1.4) Deixe ele disponivel nos binarios locais:
sudo mv chromedriver /usr/local/bin/


Referencias:
http://toolsqa.com/selenium-webdriver/selenium-grid-how-to-easily-setup-a-hub-and-node/

quinta-feira, 29 de junho de 2017

Quais as considerações para salvar um senha do usuário na aplicação?

Se você tiver construindo um App para celular e precisar salvar a senha do usuário, quais os pontos positivos e negativos dessa decisão? Essa funcionalidade pode ser oferecida?

Primeiramente, podemos aprender com quem já faz isso hoje, por exemplo os navegadores. Os navegadores modernos, após você digitar usuário e senha costumam perguntar "Você deseja salvar as informações de acesso deste site?". Neste momento, você sabe quais aspectos de segurança estão envolvidos?

Pontos positivos ao salvar a senha

Você salvar sua senha e não ter que digitar a todo momento tem algumas vantagens:
  1. Evita alguém descobrir sua senha
    1. Ter um keylogger instalado na máquina pode capturar o que foi digitado (Na verdade, se este for o seu problema sua segurança está mais comprometida do que estamos discutindo aqui)
  2. Visualizarem sua digitação. Se você viu o filme do Snowden deve lembrar dele logando em um notebook digitando uns 20 caracteres debaixo de um cobertor. Ver o que você digita no celular é ainda mais fácil por uma pessoa de fora
  3. Comodidade de não ter que digitar a senha a todo momento

Pontos negativos de ter a senha salva


  1. Se esquecer o dispositivo desbloqueado, um invasor que tiver acesso ao dispositivo terá acesso a todos sites e apps que tem senha armazenados.
  2. Senha salvas, por mais que encriptadas ou escondidas, estão no dispositivo. Essas podem ser quebradas (de um jeito fácil ou até difícil, dependendo da implementação do desenvolvedor)

Boas práticas para o usuário que utiliza a funcionalidade

  1. No Chrome rodando no Windows, a senha armazenada depende da senha do usuário do Windows, então escolha um senha forte para o usuário do windows - pois com acesso a esse, o invasor poderá ter acesso ao computador e todas as senhas armazenadas facilmente.
  2. Se proteja de malwares
  3. Se quiser maior segurança, não salve senha no navegador. Salve em gerenciadores de senha como o Keepass. Obviamente, há perda da conveniência entregue pelo auto completar.
  4. Quer ainda mais segurança, faça a criptografia dos dados no disco rígido. Assim caso a pessoa tenha acesso ao dispositivo físico, não terá acesso aos dados facilmente

Conclusão para o usuário

O tanto da segurança ao salvar senhas depende totalmente do usuário e seus cuidados. Passando pelo conhecimento do que está acontecendo no aplicativo utilizado (nesse processo de salvar a senha) e a restrição de acesso ao dispositivo que ocorreu o armazenamento.

Conclusão para o desenvolvedor

Aprenda com soluções de mercado as práticas e riscos de armazenar as senhas, veja os links abaixo explicando o que foi feito pelos navegadores.

Referências:
http://www.pandasecurity.com/mediacenter/security/browser-saves-password-secure/
http://raidersec.blogspot.com.br/2013/06/how-browsers-store-your-passwords-and.html?m=1
https://www.howtogeek.com/70146/how-secure-are-your-saved-chrome-browser-passwords/

terça-feira, 2 de maio de 2017

Introdução ao Cordova

O Apache Cordova é uma framework gratuita e de código aberto para criar apps multiplataformas usando Html 5. Este tipo de aplicação é também chamado de app híbrido.

O Html sempre permitiu criar aplicações multiplataformas tendo navegadores como clientes, mas carecia de ter acesso às funcionalidades nativas do celular (Câmera, acesso aos contatos, GPS) – o Cordova veio preencher esta lacuna. Mais recentemente o Progressive Web Apps também vem atender esta mesma situação, sem necessidade de publicar app em loja.

O Apache Cordova consiste nos seguintes componentes:

  1. Código fonte para um container de aplicação nativo, para cada plataforma móvel suportada;
  2. Conjunto de Apis Core que provê à aplicação web acesso às funcionalidades nativas do dispositivo, que normalmente não são suportadas por aplicações no navegador;
  3. Conjunto de ferramentas para gerenciar
    1. processo de criação de aplicação
    2. o ciclo de vidas de plugins
    3. construir aplicações nativas (com o uso das SDKs nativas)
    4. testar aplicações em emuladores e simuladores

A aplicação nativa do Cordova contém um Web View (componente Nativo que permite navegar em páginas). Quando a aplicação é iniciada, ela abre a página inicial (html) e segue o fluxo em um navegador padrão, podendo carregar mais recursos (javascript, imagens, json) e modificar a página dinamicamente.

Vantagens do Cordova

  1. Fácil de aprender, se você for um desenvolvedor web poderá utilizar seu conhecimento para gerar um app
  2. Acesso às funcionalidades nativas
  3. Gratuito
  4. Código aberto
  5. Grande comunidade, com mais de 50.000 perguntas feitas no stackflow http://stackoverflow.com/tags/cordova/info
  6. Escreve uma vez e pode fazer múltiplas distribuições

Desvantagens

  1. Documentação pobre
  2. Mais lento que o nativo
  3. Precisa usar outra framework para os componentes (Ionic etc), já que o Cordova é apenas um Wrapper
  4. Bugs no plugin
  5. Nem todos dispositivos são iguais, e o acesso as funcionalidades do celular pode ser diferente


 

Qual a Diferença de Cordova e Phonegap?

Phonegap é o nome do projeto original, criado pela startup Nitobi por volta de 2009. Em 2011 a empresa foi comprada pela Adobe e o o código aberto do que veio a se tornar o Cordova foi doado ao Apache Foundation.

Hoje o Phonegap é uma distribuição de Cordova mantida pela Adobe.

Como funciona o Cordova?

A interface do Cordova é um web view (componente que permite navegação). A compilação do Cordova apenas pega o Html, CSS e Javascript e disponibiliza juntamente com a App, como recursos normais acessíveis por qualquer navegador.

Funcionalidade Nativa do Dispositivo

O acesso a funcionalidades nativas dos dispositivos é feito por plugins, que disponibilizam uma API para o Javascript. Estes plugins são escritos em códigos nativos, e por isso é necessário ter instalado o SDK das diferentes plataforms que você pretende distribuir.
Há plugins oficiais da comunidade (que tem o prefixo cordova-plugin) e os não oficiais.

O que é possível construir com o Cordova?

Praticamente qualquer tipo de aplicação, mas o Cordova é melhor em buscar dados no servidor, mostrar para o usuário e reagir a entrada de informações.
Também é possível criar apps com base de dados local, como o LokiJS

Limitações

Desempenho

Como o acesso às funcionalidades nativas dependem de plugins, não é interessante criar aplicativos que dependem exclusivamente de CPU e GPU

Disponibilidade de Plugins

Se algum plugin para uma funcionalidade não estiver disponível, você precisará de cria-lo ou esperar alguém fazê-lo.

Web View

O Web view é uma funcionalidade específica de cada plataforma, e por isso pode ter comportamento diferente.
Se necessário é possível utilizar o CrossWalk para ter um web view customizado.

Formas de desenvolvimento

Cross-platform (CLI) workflow: mais indicado se você deseja criar apps multiplataformas.
A linha de comando copia os arquivos necessários para cada plataformas nos subdiretórios corretos e as configurações necessárias, abstraindo os scripts shell de baixo nível.

Platform-centered workflow: quando estiver focando em uma única plataforma e precisa modificar baixo nível. Você poderá misturar componentes nativos com componentes Cordova baseado na Web.

Ao mudar a forma de desenvolvimento do Cross-Plataform (CLI) para a opção específica é um caminho sem volta.

Compilação

É possível fazer o build da aplicação local ou no Phonegap Build Service, que gera os binários para você sem precisar tem o específico de cada plataforma – como no caso do IOS que demanda um Mac.

Referências para o Post

An Introduction to Cordova: Basics por Wernher-Bel Ancheta em Janeiro de 2016

Introduction to Apache Cordova por John M. Wargo em Julho de 2014 com 8 páginas de informações

Curso Building an App With Cordova por Reginald Dawson de Novembro de 2015 com duas aulas iniciais gratuitas e o vídeo abaixo, que mostra mais um pouco sobre configuração de ambiente, criação do Html para o Cordova e resultado para o emulador:

Curso online de Cordova & PhoneGap: Apps mobile com HTML, CSS e JS por Sérgio Lopes com a primeira aula disponível gratuitamente

Curso Multiplatform Mobile App Development with Web Technologies no Coursera