Últimas notícias do evento

Vagas para Profissionais Java – JavaJobs

Postado em Atualizado em

Segue a divulgação de um novo portal grátis para busca e cadastro de vagas para profissionais Java:
http://www.javajobs.com.br

O JavaJobs.com.br é um site que tem como objetivo divulgar exclusivamente ofertas de emprego para profissionais que utilizam a plataforma Java. Tudo isso de forma gratuita, ou seja, você não irá pagar nada para anunciar suas ofertas em nosso site como também não será cobrado valor algum ao candidato.
Nosso interesse é ajudar a divulgar ao máximo a plataforma Java no Brasil, para que mais profissionais consigam uma alocação adequada às suas habilidades e que as empresas consigam mão-de-obra de uma forma mais rápida e simples.
Simples como o site, simples como divulgar a sua oferta de trabalho. Experimente, é 100% free.

Características:
– 100% gratuito;
– Simples (Não é necessário cadastramento da empresa/candidato);
– Fácil (O preenchimento do formulário é bastante simples, o procedimento de busca é similar aos sites de buscas mais populares);
– Rápido (A publicação de sua vaga aparece por ordem de inclusão imediatamente);
– Específico (Somente para profissionais Java);
– Seguro (todas as informações são verificadas após a publicação, para que sigam os objetivos do site);
– Sem limites (Você pode publicar quantas vagas desejar).

Experimente tambem:
http://www.aspjobs.com.br
http://www.phpjobs.com.br

“Sorte é quando a oportunidade encontra alguem com a capacitação necessária”

Livro para Certificação SCWSD

Postado em Atualizado em

Foi liberado hoje como pré-venda pela Amazon.co.uk o livro oficial para certificação Sun Certified Developer for Java Web Services Study Guide (Exam 310-220) (Certification Press) (Paperback).

51w3ccfwsvl_sl160_1

Para aqueles como eu que estam planejando se certificar nessa prova, vale a pena comprar o livro mais em conta e esperar mais alguns meses para começar estudar. A previsão para entrega do livro é até Junho 2009. Até lá recomendo a leitura de outros livros sobre o assunto para dar aquele overview básico. T+ 🙂

Vulnerabilidade de Aplicativos Web

Postado em

Vulnerabilidade é definida como uma falha de projeto, implementação ou configuração de um software que quando explorada por um atacante resulta em violação de segurança. As vulnerabilidades são resultados das reduções de custos com mão de obra não qualificada, contratando e formando equipes sem a competência adequada resultado na maioria das vezes em aplicações problemáticas com dezenas de falhas de segurança.

Fiz um estudo para uma possível implementação de uma aplicação web com o perfil de um tipico “Home Bank” e resolvi criar um post bem resumido sobre assunto. Segue abaixo os descritivos das vulnerabilidades mais comuns e suas respectivas medidas de prevenção:

1. Validação de Dados
Ocorrem quando a aplicação implementa as validações de dados na camada de apresentação usando javascript. A tecnologia que transporta as páginas, arquivos e informações pela web é o protocolo HTTP que nada mais que um simples texto e podem facilmente ser interceptado, visualizado e alterado por qualquer pessoa através de uma ferramenta sniffer e qualquer manipulador HTTP como TamperData, TamperIE ou Spike Proxy. Outro fator é que javascript também pode ser facilmente desabilitados ou alterado no browsers.
Solução – Replicação ou a centralização das validações: tipo de dado, consistência e regras de negócio na camada de negócio da aplicação.

2. Comunicação Insegura
Algumas determinadas aplicações ou parte delas podem conter e trafegar dados altamente confidencias como números de cartão de crédito, senhas, saldos, movimentações bancarias etc..que não devem serem vistas por ninguém que não contenha as credencias necessárias.
Solução – Utilização de canal seguro criptografado SSL garantindo a autenticidade, integridade e privacidade devido a natureza frágil de comunicação já descrita na vulnerabilidade 1.

3. Restrições de Acesso
Liberação de acesso as URL’s onde o usuário não tenha permissão ou não esteje autenticado, podendo ocorrer quando o atacante consegue fazer copias das URL gravada na memoria do browser na maquina de um usuário que já tenha acessado o aplicativo. Outro caso comum é em aplicativos que usam o mecanismo de “ocultamento de recursos na GUI” que disparam processos nos quais os usuários sem a devida permissão, porem não é implementado validações nos processos de negocio que valide isso. Pela fragilidade já descrita acima do protocolo HTTP pode ocorrer casos em que o atacante ainda consiga enviar requisições para estes determinados recursos mesmo em oculto executando de forma indevida o processo.
Solução – Implementação de um controle de autenticação e autorização tanto na camada de apresentação e na camada de negócio, independentemente se o recurso for ocultado da GUI (que é também um mecanismo recomendado).

4. Injeção de JavaScript e HTML
Ocorre na injeção de códigos javascript e HTML maliciosos em campos texto da aplicação. Com isso, o valor do campo é gravado no SGDB e posteriormente usado em outras páginas na aplicação. Quando este fato acontece, o conteúdo malicioso escrito em javascript é renderizado na página e conseqüentemente executado podendo abrir possibilidades de prejudicar a aplicação. Segue alguns dos problemas críticos que injeção de javascript podem acontecer:

4.1-Roubo de Cookies:
Aplicativos web utilizam da tecnologia de Http Cookie para gerenciar a sessão do usuário autenticado na aplicação e a injeção de javascript pode acessar os cookies que estam armazenados no memória (DOM) do browser. De posse da chave única da sessão do usuário autenticado, o atacante pode abrir comunicação com a aplicação em diversas formas HTTP, passando falsamente a mesma chave previamente roubada, fazendo com que a aplicação pense que é a mesma sessão já autenticada e assim tendo toda as portas abertas para manipular a aplicação e suas informações.
Solução – Independente de toda a preocupação e esforço implementado na questão da segurança é recomendável que ainda exista um mecanismo que identifique e impeça que uma sessão seje utilizada por mais de um “Cliente IP” ao mesmo tempo, que neste caso configura-se a ocorrência de uma ataque.

4.2-Redirecionamento:
Injeção de javascript pode disparar a execução do redirecionamento de uma aplicação real para uma falsa aplicação com a mesma aparência (Engenharia Social). Com a fraude montada, a falsa aplicação se passando pela verdadeira consegue fazer o usuário fornecer as qualquer tipo de informações voluntariamente.
Solução – Validação na camada de apresentação substituindo, rejeitando ou eliminando as possíveis ocorrências de injeção de todos os campos digitados pelos clientes que serão armazenados no SGDB.

5. Parâmetros Temporários de Controle
É comum os aplicativos web utilizarem parâmetros temporários para armazenar informações referentes a diversas operações dos usuários durante a sua utilização e navegação no sistema. O problema da injeção de javascript neste caso ocorre naqueles parâmetros que não são armazenados no SGDB, mas que venham a ficar persistidos ao longo de algumas interações. O fato é a fragilidade de comunicação já descrita na vulnerabilidade 1.
Solução – Validação na camada de apresentação substituindo, rejeitando ou eliminando as possíveis ocorrências de injeção de todos os valores trafegados nas requisições HTTP.

6. Injeção de SQL
Ocorrem na injeção de códigos SQL maliciosos em campos texto da aplicação que seram concatenados como parte de instruções maiores e executadas no SGDB da aplicação, podendo inverter completamente a semântica da instrução.
Solução 1 – Validação na camada de apresentação ou persistência substituindo, rejeitando ou eliminando as possíveis ocorrências de injeção.
Solução 2 – Utilização de instruções SQL pré compilados do determinado SGDB, fazendo com que os caracteres concatenados da GUI não sejem interpretados como parte das instruções SQL.

7. Referência Direta Insegura
É comum em aplicativos web existirem operações ou processos construídos como “Seqüencias de Operações” muito conhecidos como workflow. Nestes casos, os usuários são expostos a uma seqüencia passos ao longo de varias páginas selecionado e acumulando valores pré-definidos em widgets como drop-down list, radio buttons, input hidden ou qualquer um deles desabilitados. Os valores acumulados e armazenados nas páginas são considerados pela aplicação com “valores imutáveis” para a determinada ocorrência mas que na verdade podem ser facilmente alterados por um atacante manipulando diretamente o pedido HTTP podendo furar regras de negócio e até deixar o estado do SGDB inconsistente.
Solução 1 – Estado de conversação do usuário deve ser exclusivamente e completamente gerenciado no escopo da sessão.
Solução 2 – Caso sejem usados campos com valores hidden ou desabilitados nas páginas, faça com que as operações de negócio sejem validadas repetitivamente durante todos os intervalos das requisições necessários.

8. Falsa Requisição
Ocorrem quando um usuário é autenticado em uma aplicação, o cookie ID é configurado e a pessoa começa a interagir com a sistema. O atacante sabendo que o usuário pode estar naquele momento utilizando varias outras aplicações simultâneas em seu browser, pode por exemplo disponibilizar um outro site que contenha um link com uma chamada previamente direcionada para alguma operação na outra aplicação vitima. Quando o usuário dispara essa falso pedido, o coitado do navegador ira manda o cookie de autenticação já confirmada e o sistema ira efetuar a operação.
Solução 1 – Disponibilizar controle de “token internos” nas operações.
Solução 2 – Disponibilizar controle de parâmetros randômicos para cada link e formulário evitando pedidos estáticos.

9. Escapamento de Informações
Ocorrem pela falta de uma adequada manipulação de erros e exceções que podem ocorrer durante a utilização da aplicação, expondo detalhes internos de construção como erros SQL, tecnologias etc…podendo ser utilizados pelos atacantes.
Solução – Utilizar mecanismos de arquivos de log ou monitoramentos de sistemas que não sejem acessíveis ou expostos aos usuários da aplicação.

10. Ataque de Força Bruta
Ocorrem quando os atacantes tentam descobrir senhas de usuários com o auxilio de algumas ferramentas automatizadas que realizam incansáveis tentativas de autenticação falhas baseado em um dicionário de dados. Estas ferramentas geram os dicionários de dados combinando informações dos usuários como: datas importantes, nomes de familiares, de animais, filmes favoritos, placas de carros etc…
Solução – Desabilitar o acesso temporário dos usuários após um número máximo de tentativas de autenticação falha, disponibilizando politicas rápidas de reativação. Obrigar os usuários a utilizarem senhas com números, letras, caracteres e tamanho mínimo, exigindo a sua troca periodicamente.

11. Captura de Senhas
Ocorrem normalmente quando um programa vírus Trojan alojado no computador do cliente monitora a digitação da senha do usuário no aplicativo.
Solução – Utilizar mecanismos de digitação através de um teclado virtual variável que possua dois ou mais dígitos por botão que mudam de lugar aleatoriamente a cada acesso.

12. Token de Operação
Independentemente de como, ainda pode ocorrer momentos em que o atacante consegue obter a senha do usuário através de falhas de segurança da aplicação, engenharia social, roubo de documentos, vírus alojados como Trojan etc…
Solução -Implementação de mecanismos para que o sistema requisite seqüencias alternadas de tokens previamente cadastrados (simples cartão com os números) ou randomicamente gerados (dispositivo automatizados) que antecedam as operações de negócio na aplicação, fazendo com que qualquer usuário sem a posse do token não consiga acessar ou realizar partes da aplicação. Estes tokens são criados baseados em chaves privadas, certificados digitais, possuindo algoritmos de criptografia como o RSA, DES e 3DES.

O post fica aberto para comentarios e outras dicas de vulnerabilidades.

TDD Reference Card

Postado em

Para os adébitos do desenvolvimento TDD, esta disponível para download o jUnit e EasyMock reference card.
Atualmente o jUnit e EasyMock são as escolhas predominantes como ferramentas de testes no mundo java. Este guia de referencia contem definições resumidas para a construção de unidades de testes e objetos simulados bem como as descrições necessárias de cada detalhe referente ao seus ciclos de vida.
Testar nunca é de mais 😉 !!!

Dicas de JSF

Postado em Atualizado em

Eu sempre estou acompanhando os blogs de java da galera pela web e atualmente podemos encontramos uma serie deles com um pessoal de alto nível !!! Nestas surfadas, eu acabei encontrando o blog do Rafael Ponte que tem se destacado pela qualidade e objetividade dos post’s. Parabéns Rafael !!!! 😉 Pude perceber que o Rafael escreveu uma série de post’s sobre JSF contendo um grande valor conceitual e prático relacionado com a tecnologia. Segue abaixo alguns deles interessantes…e…leitura obrigatória para aqueles que já trabalham ou que começaram a trabalhar com JSF.

1.Validação de Campos
2.Paradigma Ajax com JSF
3.Conversores com Entidades
4.Entendendo Redirect X Forward
5.Controlando Nomeação dos GUI
6.Controle do Estado – Cliente X Server
7.Esperando o JSF 2.0
8.10 Maus hábitos que devem ser evitados em JSF.

Próximas dicas é para o Blog do Balusc que contem uma série de dicas de usabilidades gerais básicas para JSF.

1.Passing action parameters from JSF to backing beans
2.Passing GET parameters from JSF to backing beans
3.Passing component attributes from JSF to backing beans
4.Passing objects from request to request
5.Passing new hidden values to backing beans
6.Communication between managed beans
7.Injecting managed beans in each other
8.Accessing another managed bean
9.Returning current managed bean instance of self
10.Lookup the managed bean name inside the backing bean
11.Accessing the FacesContext inside HttpServlet or Filter

Boa leitura a todos 😀

JSF 2.0 – @ManagedBean

Postado em Atualizado em

Na especificação 2.0 sera adicionada a anotação @ManagedBean que poderá ser usada no lugar da configuração default do faces-config.xml. Veja o artigo do Arun Gupta falando sobre o assunto.
E que venha o JEE 6 !!!

Listas & Fóruns sobre Java

Postado em Atualizado em

Dia a dia nos deparamos com situações em que os livros e links na web não ajudam e nem respondem diretamente uma situação ou algum problema. Por isso é recomentando participar de listas de e-mails ou fóruns de discussão sobre java, onde qualquer pessoa pode postar uma pergunta relacionado com uma dúvida ou problema para que muitos outros desenvolvedores possam dar aquele help. É muito bom participar sendo que vc pode compartilhar idéias, situações ou problemas com pessoas dos mais diferenciados níveis de experiência, podendo até em algumas horas ter várias respostas de diferentes pessoas espalhados pelo Brasil que já passaram pela mesma situação, duvida ou problema. Segue a baixo as mais badaladas lista e fóruns de java:

java-list@soujava.dev.java.net – Lista de java básico especializada em tópicos para a plataforma JSE.
enterprise-list@soujava.dev.java.net – Lista especializada em tópicos para a plataforma JEE.
j2me-list@soujava.dev.java.net – Lista especializada em tópicos para a plataforma JME.
http://groups.google.com/group/javasf/topics – Grupo brasileiro específico para discussão sobre JavaServer Faces.
Portal Java Fóruns – Diversos fóruns separados por tópicos do Portal Java.
JavaFree Fóruns – Diversos fóruns separados por tópicos do Java Free.
GUJ Fóruns – Diversos fóruns separados por tópicos do GUJ.

Como sempre digo “A troca de experiência e informação é a forma mais rápida e concreta de aprendizado.”