Protegendo sua aplicação – Mini Livro

Olá, tudo bem?

Esse post é para comemorar a marca de 1 milhão de visualizações que o blog atingiu no mês passado. Abaixo você encontrará mini livro sobre segurança, grátis.

Todos os milhares de envolvidos no blog (cof cof cof) estão mega animados e prontos para celebrar esse marco histórico:

happy

Melhor deixar a celebração para outro dia… =P

Hoje vamos falar sobre segurança. Não apenas segurança de ambiente, mas também em como criar um código seguro. Esse post na verdade faz parte do que eu chamo de Mini Livro. Não será publicado como livro, mas também foge a regra de que um post deve ter poucas páginas.

Por diversas vezes ouvimos falar de ataques, mas não paramos para pensar em como poderíamos proteger nossa aplicação.

Um projeto com um código seguro e um ambiente de produção que sejam seguros e de rápida respostas a um ataque é primordial para qualquer empresa. Precisamos ter a certeza de que nosso código está seguindo boas práticas e que, nosso ambiente de produção está protegido e bem preparado para qualquer tipo de ataque que chegar.

Atenção: Eu não vou gerar uma versão em PDF deste post. Já levo muito tempo apenas para planejar, escrever, formatar e traduzir o post. Para mim é inviável gerar uma versão em PDF ou qualquer outro formato para colocar a disposição aqui no blog. Este mini livro estará apenas disponível online.

Graças ao Rogério Angeliski temos ao final do post a versão em PDF do post.
Muito obrigado Rogério!

O que veremos por aqui:

  • Página 02: No que se baseia segurança?
  • Página 03: Público Alvo
  • Página 04: Um bom hacker sempre tem tempo
    • Cuidado com a informação retornada
    • Cuidado com o tamanho da mensagem retornada
    • Firewall/SSL não faz mágica
  • Página 05: Tipos de ataques e sugestões para evitá-los/tratá-los:
    • SQL Injection
    • JPQL Injection e HQL Injection
    • Cross-Site scripting (XSS)
    • Brute Force Attack
    • Man In The Middle
    • XPath Injection
    • LDAP Injection
    • DoS ou DDoS
    • Slow DoS
  • Página 06: Cuidado com os dados
    • Protegendo a entrada de dados
    • Protegendo a saída de dados
  • Página 07: Cuidados com o “Client Side”
    • Fique atento a URL
    • Testes Técnicos
  • Página 08: Validações
    • Validando dados
    • Cuidado com arquivos
  • Página 09: Sempre dê o menor privilégio possível
  • Página 10: Trate os erros do projeto
  • Página 11: Cuidados com bibliotecas de terceiros
  • Página 12: Versão do projeto
  • Página 13: Preste atenção com o log
  • Página 14: Separe seu projeto das camadas
  • Página 15: Comentários nem sempre são saudáveis
  • Página 16: Sempre valide seu código
  • Página 17: Tenha um CheckList
  • Página 18: Cuidado com a equipe de TI
    • Exposição dos dados
    • Cuidado com o código escrito
    • Futuro ex-funcionário
    • Code Review / Pair Programming
    • Fique atento a terminologia
  • Página 19: Proteja a senha do modo correto
  • Página 20: Boas práticas para controle de acesso
    • Esconda o botão/link, mas proteja o código
    • Conheça a necessidade do seu usuário
    • Sempre oculte
  • Página 21: Políticas de Segurança
  • Página 22: Evitando falhas de códigos e/ou frameworks
    • Não exponha tecnologias desnecessariamente
    • Nunca misture os tipos
    • Utilize chaves nos “IFs”
    • Inteiros com Flutuantes
    • Sempre programe defensivamente

Não sou nenhum especialista no assunto, apenas estou compartilhando coisas que aprendi por leitura ou vivenciei no dia a dia do desenvolvimento.

Vamos começar?

Protecting your Project – Mini Book

Hello, how are you?

This post is to celebrate the mark of 1 million views that the blog reached in the last month. Below you will find a free mini book about project security.

We are very excited to celebrate this milestone, all the 300+ post writers of the  blog(cof cof cof) cannot wait for the party:

happy

Ok… We will do the celebration in another day.

Today we will talk about security. Not only environment security, but how can we create a secure code. This post is what I call of: “Mini Book”. This post will not be published as a book, but it does not have a few pages like other posts.

It is easy to hear about a hacker attack in the news, but we do not take a time to think about security measures to our systems.

A project that has a code with good security practices and a production environment that is safe and fast to respond a hacker attack should be a requirement for every project. We need to be sure that our code is following good security practices; it is fundamental that our production environment is protected and ready to react when a hacker attacks our project.

PS.: I will not create a PDF version of this post. I have invested several hours planning, writing, formatting and translating this post. I do not have enough time to create a PDF or any other file format version of this post. This Mini Book will be available on-line only.

What you will see here:

  • Page 02: What are the foundations of security?
  • Page 03: Who will access our project?
  • Page 04: A good hacker always will have time
    • Watch out for the returned information
    • Watch out for the size of the returned message
    • Firewall/SSL does no magic
  • Page 05: Attack types and suggestion prevent/handle them
    • SQL Injection
    • JPQL Injection and HQL Injection
    • Cross-site scripting (XSS)
    • Brute Force Attack
    • Man in the middle
    • XPath Injection
    • LDAP Injection
    • DoS or DDoS
    • Slow DoS
  • Page 06: Protect your data
    • Protecting the incoming data
    • Protecting the outgoing data
  • Page 07: The “Client Side”
    • URL tips
    • Technical Tests
  • Page 08: Validation
    • Data validation
    • Be careful with uploaded files
  • Page 09: Always start with the lowest privilege
  • Page 10: Handle all project exceptions
  • Page 11: Watch out for third party libraries
  • Page 12: System versions
  • Page 13: Pay attention to the log
  • Page 14: Add layers to your project
  • Page 15: Comments in code are not always healthy
  • Page 16: Always do a Code Validation
  • Page 17: Create a Checklist
  • Page 18: IT Staff
    • Data leaking
    • Be careful with your code
    • Fired Employee
    • Code Review / Pair Programming
    • Defining a terminology
  • Page 19: Handle the passwords correctly
  • Page 20: Good practices to handle user requests
    • Hide the buttons/links, but protect the code
    • Know your user needs
    • Always hide
  • Page 21: Security Policies
  • Page 22: Be careful with errors in the code/frameworks
    • Do not expose the technologies
    • Do not mix the types
    • Use brackets in the Ifs
    • Integer and Floating
    • Defensive programming

I am not an expert in the security subject; I am sharing what I learned by reading books or in the places that I have worked.

Let us begin.

Review do Livro: Developing RESTful Services

Olá pessoal, tudo bem?

Fui convidado pela editora Packt para fazer o review do livro: Developing RESTful Services with JAX-RS 2.0, WebSockets, and JSON.

Esse livro foi laçado em inglês apenas e não sei se haverá uma versão em português.

Ele é um livro pequeno e direto. Não se aprofunda muito no assunto, mas mostra todos os conceitos necessários para começar a construir um projeto com conceitos RESTFul.

O que mais me chamou atenção do livro foi que no capítulo dois onde ele descreve sobre pooling. O assunto foi muito bem abordado e detalhado.

Ao final do livro é possível encontrar dois projetos completos que mostram duas abordagens para a utilização de Webservice em um projeto.

É um livro interessante para quem quer saber rapidamente sobre os conceitos básicos de Webservices.

Até a próxima pessoal! o_

Book Review: Developing RESTful Services

Hello, how are you?

I was invited by Packt publisher to do a review of the book: Developing RESTful Services with JAX-RS 2.0, WebSockets, and JSON.

It is a small and versatile book. It not goes deep in the Webservices subject, but it talks about all needed knowledge to start a Webservice project.

The chapter that I liked most is the chapter two that talks about pooling. It talked a lot about it and got deep in the pooling subject.

At the end of the book it is possible to find two projects with different Webservices approaches.

It is a good book to those that wants to know quickly about the basic Webservices concepts.

See you later! o_