Tag | Tutoriais

Saiba mais sobre SQL Injection

06 / 01 / 2012Sem comentários

Primeiro, é bom saber: SQL (Structured Query Language, Linguagem de Consulta Estruturada) é uma linguagem de pesquisa para banco de dados relacional. Diferentemente de outras linguagens de consulta a banco de dados, a consulta SQL especifica o resultado e não o caminho para chegar até ele. SQL, portanto, é uma linguagem declarativa em oposição a outras linguagens procedurais. A linguagem SQL é um grande padrão de banco de dados, o que decorre da sua simplicidade e facilidade de uso.
Segundo, um resumo: SQL Injection (Injeção de SQL) é um tipo de ameaça que se aproveita de falhas em sistemas que interagem com bases de dados via SQL. A injeção de SQL ocorre quando o atacante consegue inserir uma série de instruções SQL dentro de uma consulta através da manipulação das entradas de dados de uma aplicação.

Assista a esse tutorial da OWASP e entenda melhor:

Entenda melhor o Cross-site Scripting (CSS ou XSS)

15 / 12 / 20111 comentário

O Cross-site Scripting é uma vulnerabilidade encontrada em aplicações Web que permite a inserção de códigos maliciosos, a serem executados quando a página for acessada por outros usuários.
O CSS explora a confiança que um usuário tem num site em particular; tem sido encontrado tanto nos pequenos sites como nos grandes e importantes.

Normalmente, as aplicações vulneráveis a esse ataque possuem um conteúdo dinâmico e interação com o usuário, por exemplo, fóruns, e-mail on-line e campos onde o usuário pode inserir dados: caixas de texto para mensagens, espaço para comentários em blogs, caixas de busca etc.

Por meio desse ataque, o cracker pode instalar silenciosamente vários malwares e, por exemplo, simular a página de login de um site para capturar os valores digitados.

Neste tutorial da OWASP, você pode entender melhor o que é o Cross-site Scripting:

Referências:
iMasters
Wikipedia

Linha de defesa: SENHAS

19 / 10 / 2011Sem comentários


As senhas são a primeira defesa contra o acesso não autorizado a informações confidenciais. Elas não devem ser facilmente capturadas por hackers ou quebradas.

É incrível a quantidade de senhas inadequadas (não seguras) – constituídas por palavras ou números óbvios, como nome da namorada, time de futebol e data de nascimento – que encontramos durante nossos testes.

Por isso, decidimos postar aqui algumas instruções sobre como criar uma senha forte, que efetivamente exerce sua função: proteger o acesso do usuário aos sistemas e aplicações.

O que é uma senha forte?

  • Uma senha forte tem pelo menos oito caracteres, entre letras maiúsculas e minúsculas, números e símbolos.
    Senhas que contém muitas repetições de letras e não possuem números e símbolos são fáceis de descobrir utilizando softwares para quebra de senhas.
  • Uma boa senha não contém palavras completas, seu nome de usuário, seu nome real ou nome da empresa.
    Existem softwares que tentam descobrir senhas combinando e testando palavras em diversos idiomas e, geralmente, fazem uso de listas de palavras (dicionários) e listas de nomes (nomes próprios, músicas, filmes…).
    Dica: não use palavras que existam nos dicionários.
  • Números de documentos, placas de carros, números de telefone ou datas também devem ser evitados, pois são dados muito fáceis de obter e seriam a primeira tentativa de uma pessoa mal-intencionada.

Como memorizar uma senha forte?

De nada adianta uma boa senha se você não se lembra dela!
O melhor é criar uma senha a partir de algo de que você não vai se esquecer.

Por exemplo, pense numa frase significativa para você:
Minha filha, Maria Beatriz, nasceu em abril de 2011
Use a primeira, segunda ou a última letra de cada palavra. Neste caso, usamos a primeira:
Mf, MB, nea.11
(não se esqueça de acrescentar símbolos)

IMPORTANTE: ao contrário do que muitos usuários pensam, não é errado usar espaços na constituição de senhas. Eles, inclusive, aumentam a força e a segurança da senha.

Posso criar uma senha forte e usá-la em todos os serviços em que utilizo senha (acesso ao meu provedor, e-mail, conta bancária etc.)?

Imagine que você tem uma única chave que abre seu carro, o carro da sua esposa, a portaria do seu prédio, a porta da sua casa, o portão da sua empresa e a porta do seu escritório. Se ela fosse roubada, você perderia muito mais bens do que se usasse uma chave para cada uma das fechaduras.

Utilizar senhas diferentes é importante para atenuar possíveis prejuízos caso alguém descubra uma delas.

Outros cuidados importantes:

  • Troque suas senhas com regularidade.
  • Quando você contratar um serviço e receber uma senha automática, troque-a com urgência.
  • Existem sistemas que permitem observar dados enquanto eles trafegam entre redes. Caso esses dados não estejam criptografados, é possível que alguém capture informações importantes e confidenciais, como senhas. Certifique-se de que seu provedor oferece serviços criptografados.
  • Não utilize computadores de terceiros, como é o caso de LAN houses cyber cafés, para operações que exijam o uso de suas senhas.

 

fonte:
http://cartilha.cert.br/
http://windows.microsoft.com/

12 Passos para um melhor código

03 / 03 / 20101 comentário

Quais são as melhores práticas para desenvolver um código de qualidade?

Existem diversas metodologias disponíveis para tratar desses assuntos, como o guia de desenvolvimento da OWASP e o modelo de maturidade de software  OpenSAMM do Pravir Chandra, livros como o Software Security: Building Security In do Gary McGraw, entre diversas outras referências, modelos de SDLC de fabricantes, etc.

Apesar de ser extensa e efetiva, essas referências trazem muitos conceitos de segurança e, com isso, a curva de aprendizado é longa, bem como a implementação de todo SDLC. Por isso, para ao menos verificar se sua equipe está trabalhando com o mínimo de qualidade no processo de desenvolvimento, Joel Spolsky postou em seu blog um teste que em suas palavras é  “irresponsável e pouco rigoroso”, porém interessante, com as seguintes perguntas:

  1. Você usa controle de versão dos fontes?
  2. Você pode fazer uma build em um passo?
  3. Você faz builds diariamente?
  4. Você tem uma base de bug e falhas?
  5. Você conserta os bug e falhas antes de escrever novo código?
  6. Você tem um cronograma atualizado?
  7. Você tem uma especificação?
  8. Os programadores tem condições de trabalho em silêncio?
  9. Você tem as melhores ferramentas que o dinheiro pode comprar?
  10. Você tem equipe de testes?
  11. Os novos candidatos escrevem códigos durante suas entrevistas?
  12. Você adota o ” teste de usabilidade corredor”? * Chamar pessoas que estão passando para testar a usabilidade do seu novo código

Se você responder “sim” para mais de 10 questões, pode-se considerar que você adota boas práticas mínimas para manter a qualidade do software, qualquer valor de 10 para baixo indica problemas com o processo. A Microsoft responde “sim” para as 12 questões e mesmo assim temos o semanal Patch Tuesday!!!

O problema é que muitas fábricas de software e equipes de desenvolvimento respondam “sim” para 2 ou 3 questões. E olha que não estamos falando de segurança no código, proteção de validação de dados contra ataques de SQL Injection e XSS, autenticação e outros controles que devem ser previstos em aplicações de forma geral.

Se precisar de ajuda para reduzir riscos em seu ambiente, entre com contato para ajudarmos a mensurar o conhecimento de sua equipe e adotar um processo de desenvolvimento seguro para sua empresa.

–Leo Cavallari

Building Secure Software