ATPS de Desenvolvimento de Software Seguro
Por: Carolina234 • 25/6/2018 • 1.253 Palavras (6 Páginas) • 380 Visualizações
...
Para prevenir o estouro de memória um dos métodos tradicionais é verificar a quantidade de bytes que será copiado, e caso seja maior, copiaremos apenas a quantidade suportada pela variável ou pode-se utilizar alocação dinâmica de memória para que o tamanho da memória reservada para a variável seja do mesmo tamanho da string.
Ainda podemos prevenir o Buffer pverflow (COOKIES)
Cookies como são conhecidos, servem para armazenar informações que serão utilizadas em um futuro pouco distante, seja para validação ou para lembrar algo feito anteriormente.
Relatório 3: Utilizando Criptografia
$texto_criptografado = base64_encode("senha");
echo $texto_criptografado;
?>
O código acima apresenta o método de criptografia Hash Base64, bastante utilizado em PHP para codificação dos dados para transferência na Internet. Ela é uma codificação de mão dupla. Porém não é o único tipo de criptografia que pode ser utilizada em PHP e nem a mais forte. As criptografias MD5 de 128 bits e a SHA1 de 160 bits são mais fortes e também bastante utilizadas em outras linguagens. O nível de segurança de uma criptografia é medido no número de bits, ou seja, quanto mais bits forem usados, mais difícil será quebrar a criptografia na força bruta. No caso da função Hash, o nível de segurança é dado pela dificuldade de se criar colisões intencionais, evitando que haja sequência iguais para dados diferentes.
A MD5 de 128 é um algoritmo de hash de 128 bits unidirecional desenvolvido pela RSA Data Security, Inc., descrito na RFC 1321. Este protocolo e muito utilizado para integridade de arquivos e logins. Foi desenvolvido em 1991 por Ronald Rivest para suceder ao MD4 que tinha alguns problemas de segurança.Por ser um algoritmo unidirecional, uma hash md5 não pode ser transformada novamente no texto que lhe deu origem. O método de verificação é, então, feito pela comparação das duas hash (uma da mensagem original confiável e outra da mensagem recebida).
O SHA1 e da família de SHA (Secure Hash Algorithm) está relacionada com as funções criptográficas. A função mais usada nesta família, a SHA-1, é usada numa grande variedade de aplicações e protocolos de segurança, incluindo TLS, SSL, PGP, SSH, S/MIME e IPSec. SHA-1 foi considerado o sucessor do MD5. Ambos têm vulnerabilidades comprovadas1 . Em algumas correntes, é sugerido que o SHA-256 ou superior seja usado para tecnologia crítica. Os algoritmos SHA foram projetados pela National Security Agency (NSA) e publicados como um padrão do governo Norte-Americano.
Relatório 3: Utilizando Criptografia
Para adicionar a criptografia hash em JAVA o processo clássico é guardar um hash (chamado também de digest nesse caso) da senha do usuário, usando algum algoritmo de hash unidirecional. Isso pode ser feito utilizando uma chamada de função na query do banco de dados (como MD5()no MySQL), ou, o mais utilizado para não ter de trafegar a senha entre o servidor web e o banco de dados: com o MessageDigest dojavax.security. Através dessa classe você pode facilmente gerar o hash de uma senha:
MessageDigest algorithm = MessageDigest.getInstance("MD5");
byte messageDigest[] = algorithm.digest("senha".getBytes("UTF-8"));
Agora com um array de bytes que podemos guardar no banco de dados. Quando o usuário logar, basta digerirmos novamente a senha colocada no formulário web, e comparar o hash resultante com o que há no banco. Você poderia guardar esse array de byte como uma String fazendo new String(bytes, encoding), porém muito mais usual é guardar os hexadecimais desses bytes dentro de uma String:
StringBuilder hexString = new StringBuilder();
for (byte b : messageDigest) {
hexString.append(String.format("%02X", 0xFF & b));
}
String senha = hexString.toString();
Isso gerará e8d95a51f3af4a3b134bf6bb68a213a.
Apesar de muito usado, o MD5 já é considerado um algoritmo de hash quebrado, pois hoje em dia podemos rapidamente, através de força bruta, descobrir uma String que gere o mesmo hash, já que neste algoritmo ocorrem mais colisões do que o que foi inicialmente imaginado por seus criadores. Muitos passaram a usar o SHA-1, porém este já da sinais de que, num futuro próximo, será quebrado com força bruta.
Método de criptografia em Java
String texto=”test 3’’;
MessageDigest md = MessageDigest.getInstance(“MD5);
md.update(texto.getBytes());
for(int
...