Atualmente, existem inúmeros frameworks disponíveis que auxiliam no desenvolvimento de aplicações web. Assim, é importante saber escolher qual framework poderá auxiliá-lo, levando em conta aspectos como redução de custos, segurança, documentação, detecção de erros, etc.
A adoção de um bom framework poderá ajudá-lo a ter maior produtividade e eliminar tarefas repetitivas.
Além disso, com a grande troca de informações entre diversos tipos de sistemas, há a necessidade de oferecer segurança sobre essas informações, requisito fundamental que, por muitas vezes, é sucumbido pela necessidade de entregar o software na data contratada.
Entretanto, no desenvolvimento de um projeto, é preciso saber conciliar a segurança e os demais requisitos, independente de qual seja o objetivo da aplicação. Neste cenário, para as soluções que necessitam efetuar a troca de arquivos, conheceremos o JSch.
O Java Secure Channel, ou JSch, foi desenvolvido pela empresa japonesa JCraft com o intuito de permitir que usuários pudessem desfrutar de sessões seguras em suas transferências de arquivos. Desta forma, a JCraft decidiu criar um framework baseando-se nos mecanismos de segurança do protocolo SSH2, tornando as sessões criptografadas e, portanto, seguras.
Neste artigo, utilizaremos o JSch e veremos o funcionamento de alguns dos seus recursos oferecidos para realizar a transferência de arquivos. Para isso, desenvolveremos uma aplicação web trabalhando conjuntamente com o PrimeFaces.
Este framework disponibiliza uma grande gama de componentes para se trabalhar com o JavaServer Faces (JSF), inclusive componentes para a realização de download e upload de arquivos, como é o caso da classe FileUploadEvent.
No entanto, iremos utilizá-lo em conjunto com o JSch para implementar a transferência segura de arquivos, pois apenas com o PrimeFaces não é possível realizar a transferência com a utilização do SSH2.
O que é SSH?
O Secure Shell (SSH) teve sua primeira versão desenvolvida por Tatu Ylonen em 1995 com o objetivo de obter uma ferramenta que pudesse desfrutar de acessos remotos com segurança.
A segunda versão, o SSH2, foi desenvolvida com a inclusão de ferramentas que visaram evitar falhas de segurança identificadas na primeira versão e foi padronizado pelo Internet Engineering Task Force (IETF) em 2006.
Este protocolo auxilia na comunicação entre hosts que utilizam a arquitetura cliente-servidor. Ele implementa a criptografia para estabelecer conexões seguras. Sendo assim, as informações transmitidas de um host para outro ficam disponíveis apenas entre eles, inibindo o acesso àinformação por desconhecidos.
No momento em que os dados são enviados para outro host, o SSH os criptografa automaticamente e quando chegam ao destino, são descriptografados. A conexão realizada entre os hosts é feita com a utilização de chaves de 512 bits; sendo assim, a possibilidade destes dados serem acessados por hosts não autorizados é extremamente remota.
Entre as características que tornaram o SSH popularmente conhecido, podemos destacar: sua fácil instalação e configuração, estabilidade, segurança, é suportado em diversos sistemas operacionais e possui muitos recursos para manutenção.
A Figura 1 apresenta um exemplo simples de comunicação ...