Deixe um comentário

Novo JDBC Pool Tomcat 7

Uma das novas features do Tomcat 7 é a substituição da antiga implementação do serviço de pool de conexão chamado de Commons-dbcp por uma nova implementação chamada de JDBC Connection Pool.  O Commons-dbcp sempre funcionou muito bem para aplicações razoavelmente pequenas acompanhadas de tráfico médio de acesso, não sendo indicado para aplicações grandes, com alto e crescente níveis de tráfico em ambientes multi-core/multi-cpu.  Felizmente essa situação foi contornada no Tomcat 7 aonde o  JDBC Connection Pool foi implementando justamente para suportar aplicações com alta concorrência e performance. Veja o artigo de Daniel Mikusa explicando a situação.

“A graça do Senhor Jesus Cristo seja com o espírito de todos vocês.” Filemom 1:25

Deixe um comentário

Migrando de Spring para JEE 6 Web Profile

Como foi previsto por mim e muitos outros, a nova especificação do JEE 6 realmente conseguiu reduzir a carga pesada que vinha colocando no modelo EJB. Fato é que nós realmente tentávamos a todo custo evitar usar um container JEE FULL optando por um container web, adicionado manualmente os serviços extras como gerenciamento de transação, timers, JPA etc. Nesse cenário, o framework Spring disparou no mercado Java, sendo um dos ‘lightware container” mais usados para controlar esses serviços. Com o objetivo de fechar a ideia do assunto, a dica de hoje é o artigo de David Heffelfinger abordando de como migrar uma aplicação desse modelo spring para o novo modelo Web Profile:

  1. Spring to Java EE Migration, Part 1 
  2. Spring to Java EE Migration, Part 2

Bom final de semana para todos!

“Pois desde a criação do mundo os atributos invisíveis de Deus, seu eterno poder e sua natureza divina, têm sido vistos claramente, sendo compreendidos por meio das coisas criadas, de forma que tais homens são indesculpáveis…” Romanos 1:20

4 Comentários

JSE Desktop Concent – Janeiro/2012

Neste post podemos trocar informações, comentários, sugestões e criticas durante o curso. Fiquem a vontade em postar perguntas, dúvidas, idéias etc. Bom treinamento para todos!

Deixe um comentário

OCJP – Vantagem ou Perda de Tempo?

Diante do mercado atual de trabalho, você acha vantagem ou perda de tempo tirar uma certificação de tecnologia? Anderson Torres publicou um ótimo artigo no seu blog falando sobre o assunto. Depois de ler, chegue em suas próprias conclusões.

“Para os puros, todas as coisas são puras; mas para os impuros e descrentes, nada é puro. De fato, tanto a mente como a consciência deles estão corrompidas.” Tito 1:15

1 Comentário

MundoJ Edição 51

NoSQL: Conceitos e Evolução 
Conheça o conceito de NoSQL, as motivações que levaram a sua criação e seu atual estado da arte para tirar suas conclusões sobre se vale ou não a pena investir nesse modelo de banco de dados.Por José Yoshiriro Ajisaka Ramos e Adriana de Farias Nascimento

Java e MongoDBs
Aprenda como acessar o MongoDB, um banco de dados NoSQL, através de uma aplicação Java. Por Marcio Garcia “Mangar”

Neo4j na Prática
Utilize o Neo4J para simplificar a solução de problemas não triviais em bancos de dados relacionais e como uma boa alternativa à tradicional modelagem relacional. Por Adriano Almeida

Framework FACTO para Arquitetura Corporativa
Conheça os princípios para a criação de uma arquitetura corporativa através do framework FACTO e os passos adotados durante a sua implantação. Por Jaguaraci Silva

Programação Multithread de Maneira Fácil com Scala + Akka
Introdução ao Akka, framework que torna a programação multithread simples e fácil em Scala. Por Gilberto T. Garcia Jr.

Reconhecimento de Som em Java ME
Trabalhe com reconhecimento de Som em Java ME através do Framework SRM. Por Marcelo Ruaro

Utilizando Código Java em Banco de Dados Oracle
Como criar procedimentos e funções em banco de dados Oracle utilizando Java. Por Edgard Resende Bilharinho

Cinto de Utilidades – Máquinas de Estado com o Padrão de Projeto State
Veja como implementar máquinas de estado de forma prática e direta, observando uma opção de implementação do padrão State em Java usando Enums e a Java Persistence API. Por Alexandre Gazola

Tópicos mais quentes do GUJ.com.br
O que apareceu, foi notícia e gerou discussão no fórum do GUJ durante novembro e dezembro de 2011.

Tendências em foco: Open Source: Ontem, Hoje e Amanhã
Entenda a evolução e o estado atual do Open Source, projetando uma a perspectiva para o futuro.Por Cesar Taurion

“Pois vocês sabem que não foi por meio de coisas perecíveis como prata ou ouro que vocês foram redimidos da sua maneira vazia de viver, transmitida por seus antepassados, mas pelo precioso sangue de Cristo, como de um cordeiro sem mancha e sem defeito,” 1 Pedro 1:18-19

Deixe um comentário

Matando Mitos sobre Java

Otávio Santana escreveu um ótimo artigo matando alguns mitos relacionados com Java, JVM e OpenJDK. Boa leitura para todos.

“Aprendam a fazer o bem! Busquem a justiça, acabem com a opressão. Lutem pelos direitos do órfão, defendam a causa da viúva.” Isaías 1:17

Deixe um comentário

Patterns Para Solução de Alta Perfomance

Munish Gupta publicou um incrível artigo abordando os cenários, pontos e os patterns necessários para alcançar a tão sonhada performance em arquitetura de aplicações de grande porte.

“Pois ele nos resgatou do domínio das trevas e nos transportou para o Reino do seu Filho amado, em quem temos a redençãoe, a saber, o perdão dos pecados.” Colossenses 1:13-14

Deixe um comentário

GUJ Londrina 2012

Neste ano de 2012 começamos a todo vapor nosso Grupo de Usuários Java de Londrina sob a coordenação da FOR-J. O foco do grupo é organizar encontros bimestrais objetivando:

  • crescimento pessoal com o compartilhamento de conhecimentos e experiências.
  • networking, novas amizades e novas oportunidades.
  • fortalecimento da plataforma Java na cidade e região.
  • canal de comunicação regional entre profissionais, empresas e faculdades envolvidas com Java.

Como entrar?

Todas as nossas discussões estão sendo feitas abertamente usando Google Grupos no qual todos estão convidados a participar. Não importa o seu nível de conhecimento da plataforma da Java, se você tem interesse em aprender, faça seu cadastro e participe hoje mesmo!

Como participar?

Todos tem a liberdade de votar nos nossos eventos, sugerindo tópicos de interesse, dias, horários, locais e principalmente participando dos eventos. Fortaleça o grupo, envolvendo sua equipe, sua empresa e amigos em gerais.

Posso apresentar algo?

Todos tem a liberdade de também apresentar algo, desde que tenha de alguma forma relação com a plataforma Java. Na verdade nos encorajamos a todos a fazerem isso! Poste na lista do grupo seu interesse em palestrar, descrevendo o tópico a ser abordado. Dessa forma, o coordenador do grupo ira encaixar sua apresentação na agenda dos eventos. Dúvidas relacionado com a forma e tempo de apresentação, siga o modelo de apresentação do UP-NOTES.

Estamos a disposição para qualquer outras eventuais dúvidas!

Fernando Franzini - fernandofranzini@gmail.com

“Como o ferro com ferro se aguça, assim o homem afia o rosto do seu amigo. ” Provérbios 27:17

Deixe um comentário

Memorização de Padrões

Para aqueles que desejam memorizar as intenções dos padrões de projeto com o objetivo de estar preparado para identifica-los, segue meu poster de mesa. Boa semana para todos!

“Se, porém, andarmos na luz, como ele está na luz, mantemos comunhão uns com os outros, e o sangue de Jesus, seu Filho, nos purifica de todo pecado.” 1 João 1:7

7 Comentários

Sequestro de Sessão – Invadindo o javaranch.com

Um dos ataques mais comuns a sistemas web na atualidade é o sequestro de sessão ou mais conhecido como “Session Hijacking”. Hoje eu gostaria de falar um pouco sobre o assunto, apresentando uma aplicação prática de como roubar uma sessão, invadir um site e acessar a conta da vítima.

HTTP é Stateless

A facilidade de se roubar uma sessão se da pelo justo fato do HTTP ser um protocolo de comunicação sem estado e por isso necessitar que um número de identificação trafegue dentro de todas as interações que um navegador de internet fizer para se comunicar com a solução web.

Como isso funciona?

Todas as vezes que você acessa uma aplicação web, o sistema te envia um numero único que será usado para identificar que você é você durante o uso da aplicação ao longo do tempo. Ou seja, todas as vezes que você entrar no site após abrir o navegador de internet, o sistema vai te enviar um número como por exemplo: 123ABC que será seu identificador único.  O navegador de internet foi programado para  armazenar esse número e envia-lo de volta todas as vezes que você interagir com o sistema, clicando (link, botão, aba, menu etc) na página, fazendo a solução web processar seu pedido e saber que você é você. A questão é que esse identificador fica disponível e visível para ser roubado por qualquer pessoa que tenha conhecimentos mínimos de manipulação de rede e ou protocolo HTTP.

Como roubar o identificador?

O identificador pode ser facilmente roubado de varias maneiras. Segue alguma delas:

1. Trafego HTTP – qualquer pessoa que tenha conhecimentos básicos de rede pode facilmente usar uma ferramenta chamada de “Sniffer” para interceptar todos os pedidos de internet trafegados em uma rede, visualizando todo o conteúdo do protocolo e assim localizar esse identificador.

2. No Navegador – o identificar pode ser acessado via javascript usando o comando “documento.cookie”. Isso abre varias possibilidades:

  • Qualquer pessoa que saiba escrever código javascript pode executar esse comando no navegador e obter o identificador.
  • Pode existir vírus instalados na estação do usuário sem o seu consentimento que também pode obter o identificador manipulando o navegador.

3. Link Malisioso - O usuário pode ser induzido a entrar em um link originário de algum e-mail falso ou de outro site dizendo “depois de logar no seu internet bank, click aqui para atualizar seu cadastro”. O link ou o site falso pode ser programado para ter comandos javascript que extraia esse identificador.

4. Adivinhação – Algumas soluções web tem a geração do número identificar seguindo uma lógica no qual pode ser facilmente adivinhado. Por exemplo, se o último identificador gerado foi ABC123 o próximo poderia ABC1234.

De qualquer forma que o identificador seje sequestrado, o atacante de posse desse número pode então acessar e usar a solução web fazendo o sistema pensar que o atacante é o próprio usuário autenticado.

Exemplo

Você entra no seu site de comercio eletrônico preferido, colocando seu login e senha. A partir disso começa a navegar nos livros, procurando algum do seu interesse. Nesse tempo seu identificador de sessão é roubado por uma pessoa que esta visualizando todo o trafego HTTP da rede e o atacante assim faz comunicação com essa aplicação web de comercio eletrônico fazendo a solução pensar que ele é você usando o sistema. Diante disse, o atacante pode então executar qualquer ação maliciosa que prejudique você e a solução como por exemplo, visualizar e ou alterar suas informações pessoais como endereço, cartão de credito, trocar seu cadastro, gastar seus cupons de vale-desconto ou colocar um endereço de entrega falso, ficando com sua última compra. Tudo depende do cenário da aplicação.

Prática

Vamos para a brincadeira. Hoje vamos invadir o site do Java Ranch muito conhecido pela comunidade Java mundial. O endereço do site é http://www.coderanch.com/forums/user/login e da acesso para a pagina de autenticação:

Vou colocar meu usuário e senha, me autenticando na aplicação.

Veja que eu entro no link “My Profile” e vejo minhas informações pessoais:

Para simular o sequestro de sessão, vou executar um simples javascript no navegador que acessa o número. Eu digito na barra de endereço “javascript:alert(document.cookie)” e obtenho o número da minha sessão estabelecido após me autenticar:

Veja que esse roubo pode ser feito no tráfego, por vírus, spam de e-mail ou qualquer outra coisa que maliciosamente pegue esse número. Repare que o identificar de sessão neste site esta declarado como JSESSIONID=4AD7D9322052B800F6BF03D2811AA895;

Com esse número em mãos, o atacante pode usar qualquer ferramenta HTTP para trocar requisições no site do fórum anexando o ID da sessão roubado. Com isso, o site do javaranch vai responder achando que na verdade é o próprio usuário apenas fazendo mais uma requisição. Para mostrar isso, eu escrevi uma simples aplicação Java que envia um pedido HTTP para o qualquer endereço na internet, no qual eu possa mecanicamente adicionar um número da sessão e com isso simular o cenário. Segue a abaixo o fonte do sistema:

Esse sistema apenas envia uma requisição HTTP para um endereço configurado, anexando qualquer ID de sessão e como resultado imprime no console a página de resposta retornada pela aplicação. Ao executá-lo passando o valor da sessão roubada, o site do javaranch me envia a página de resposta do meu usuário, mostrando todos as minhas informações. Ou seja, o atacante agora pode então acessar o fórum fazendo a aplicação pensar que as requisições originarias da ferramenta de ataque são do próprio usuário logado. A partir dai é muito fácil manipular a ferramenta para gerar requisições que manipulem todos os processos disponibilizados pelo sistema. Caso alguem se interesse nessa ferramenta é só postar um comentário no artigo requisitando que eu prazer em compartilhar.

Como impedir os ataques?

Os responsáveis pelas soluções web devem estar cientes das possíveis vulnerabilidades existentes nas “entrelinhas” tecnológicas da atualidade, juntamente com as questões e situações que envolvem os “ciclos de desenvolvimento” e assim devem implementar contra-medidas que venham inibir cada vulnerabilidade que possam gerar problemas dentro do contexto da negocio da solução.
O sequestro de sessão é apenas um caso de brecha das muitas dezenas existentes hoje no qual eu percebo que maioria dos responsáveis estão na verdade mal preparados e completamente a margem da situação. Para os interessados no assunto segue as minhas dicas de leituras.

Eu me coloco a disposição para qualquer eventual dúvida sobre o assunto. Até a próxima pessoal :) !

“Aquele que supre a semente ao que semeia e o pão ao que come, também lhes suprirá e multiplicará a semente e fará crescer os frutos da sua justiça.” 2 Coríntios 9:10

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Join 147 other followers