Segurança em Aplicações 5. Melhores Práticas de Programação

Slides:



Advertisements
Apresentações semelhantes
Curso de aprofundamento na linguagem C
Advertisements

ABSTRAÇÃO processo de representar um grupo de entidades através de seus atributos comuns feita a abstração, cada entidade particular (instância) do grupo.
Programação em Java Prof. Maurício Braga
Paulo Marques Hernâni Pedroso
Java Básico Orientação a Objeto Marco Antonio Software Architect Fev/2008.
Segurança em Redes - Código Seguro
De 17 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula.
Iniciação ao Java – Márcio F. Campos
Anatomia de uma classe Nome:
Políticas Curso de aprofundamento em linguagem C.
Alexandre Parra Site: Linguagem Java Alexandre Parra Site:
Capítulo 13 Pacotes. 2 Capítulo 13 – Pacotes Pacotes Pacote Cláusula package Cláusula import Executando uma classe de pacote Modificadores de acesso.
Centro Integrado de Tecnologia da Informação
Documentando con Javadoc
Introdução a JDBC Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
A linguagem C#.
Classes & Objectos em JAVA5
Segurança em Aplicações 3. Principais Ataques às Aplicações
Segurança em Aplicações 1. Introdução
Clique para editar o estilo do subtítulo mestre Desenvolvimento web com Java JAVA 5 – Declarações e Controles de Acesso.
Clique para editar o estilo do subtítulo mestre Desenvolvimento web com Java JAVA 5 – Declarações e Controles de Acesso.
Herança e Polimorfismo
Classes e objetos P. O. O. Prof. Grace.
Curso de extensão em Desenvolvimento Web
Especialização em Segurança da Informação Segurança em Aplicações 5. Melhores Práticas de Programação Márcio Aurélio Ribeiro Moreira
JAVA: Conceitos Iniciais
Classes, Objetos e Encapsulamento
Concorrência em Java Threads em Java.
Introdução a programação (if669cc)
Singleton e Adapter Professor: Nazareno Andrade
JAVA Orientação a Objetos
JAVA Linguagem Ambiente de Desenvolvimento
Sobrecarga e Encapsulamento
Linguagem Técnica de Programação VI Prof.: Luiz Gustavo Jordão Soares.
Programação I Aula 2 (Métodos)
Primeira aula de PL/SQL Parte II
Prof. Daniel Aula 03.  Criar Projeto  Criar Pacote  Criando classes  Meu primeiro programa  Compilar  Comentários  Variáveis.
Classes, Objetos, Atributos e Métodos JAVA
Linguagens de Programação II Aula 04 – Entendendo Classes
Professor: Márcio Amador
Paulo Borba Centro de Informática Universidade Federal de Pernambuco
Orientação a Objetos Parte I
Pilhas Profa. Nádia Félix.
Paradigmas da Programação – Semestre 1 – Aula 9 Professor: Eduardo Mantovani )
Aula prática 14 Orientação a Objetos – C++ Parte 2
Especialização em Segurança da Informação MELHORES PRÁTICAS DE PROGRAMAÇÃO Carlos/Cleofas/Rafael/StéphanasSegurança em Aplicações.
Programação Orientada à Objetos
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Java Kickstart, day 2 Semelhanças com linguagem C.
Prof.: Bruno Rafael de Oliveira Rodrigues. Construtor é bloco declarado que é chamado no momento em que o Objeto é criado (instanciado). Todas as classes.
1 Marcio de Carvalho Victorino JAVA. 2 Declaração de Atributos [ ] [transient] [volatile] [static] [final] ; controle de acesso –public, package (default),
Herança e Arquitetura em camadas
Linguagens de Programação
1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)
Construtores e Destrutores
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Bruno Inojosa MCP .NET Framework
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Introdução a Programação Orientada a Objetos
Modificadores Programação II.
Introdução Sintaxe Básica da Linguagem JAVA
Módulo II Capítulo 1: Orientação a Objetos
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
Acessando banco de dados com JAVA.  Linguagem independente de plataforma; ◦ “Write once, run anywhere” ◦ JVM  Java Virtual Machine  Mecanismo que permite.
Aula 11 Orientação a Objeto (OO)
Estimativa, Teste e Inspeção de Software
Felipe Nunes Flores – Programa de Educação Tutorial.
SOCKET - É um canal de comunicação entre processos que estabelece uma conexão entre eles na forma de cliente-servidor. Por meio de sockets, os computadores.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

Segurança em Aplicações 5. Melhores Práticas de Programação Márcio Aurélio Ribeiro Moreira marcio.moreira@uniminas.br http://si.uniminas.br/~marcio/ Pós-SI – 4ª Turma – 2008

Princípios das funções seguras Protótipo: função nome (parâmetros) retorno Documente as funções Use parâmetros e o retorno fortemente tipados Teste os parâmetros recebidos (evita SQL/code injection) Use funções seguras (strncpy ao invés de strcpy) Crie funções seguras (evita buffer overflow) Use componentes e bibliotecas confiáveis Teste o retorno das funções entradas Função saídas Márcio Moreira Unidade 5 – Melhores Práticas de Programação – Slide 2

Unidade 5 – Melhores Práticas de Programação – Slide 3 Princípios gerais Tenha política de versões consistentes O recurso afetado existe desde a versão? Use componentes e bibliotecas confiáveis Evite arquivos temporários Se necessário use nomes fixos (arq_userid.tmp) com privilégios fixos Não armazene senhas e chaves no código if (senha = “@b0b4*”) then ... privkey = “88419787349802” Use ambientes (dev, tst, hml e prd) seguros Márcio Moreira Unidade 5 – Melhores Práticas de Programação – Slide 3

Princípios de programação segura Controle as condições de corrida Teste antes, bloqueie, use e libere Use semáforos ou outros mecanismos do SO Minimização de privilégios Use somente os privilégios necessários Use várias camadas de segurança Autenticação para acesso (credencial do usuário) Autenticação estendida em pontos críticos da aplicação (credenciais do supervisor ou usuário) Márcio Moreira Unidade 5 – Melhores Práticas de Programação – Slide 4

Princípios de programação segura Validação das entradas (evita injection) Assuma que todas as entradas são vulneráveis Procure valores válidos e rejeite o restante Teste as entradas no client Teste as entradas novamente na apresentação Teste: Tipo dos dados Tamanho dos dados Faixa de valores válidos Formato dos valores válidos Márcio Moreira Unidade 5 – Melhores Práticas de Programação – Slide 5

Princípios de programação segura Application.dll Limite a área de exposição Crie interfaces somente quando necessário Ofereça somente os serviços necessários Use verificadores de código Ferramentas de análise estática de código Buscam vulnerabilidades conhecidas no código Trate as exceções É altamente recomendável tratar exceções As exceções de chamadas ao SO são imperativas Márcio Moreira Unidade 5 – Melhores Práticas de Programação – Slide 6

Recomendações para Java (e .net) Defina atributos da classe como private Defina métodos de acesso como protected Declare métodos internos como private Defina políticas de acesso a applets Typical Use Source code Compiler Developer Class files Libraries User Virtual Machine Márcio Moreira Unidade 5 – Melhores Práticas de Programação – Slide 7

Recomendações para Java (e .net) Use herança com cuidado Você pode herdar vulnerabilidades Declare as classes como: final (evita reuso), uncloneable (evita instância sem o construtor) e unserializable (evita acesso serial indireto) Se precisar assinar o código use um arquivo Evita o uso indevido de arquivos assinados Márcio Moreira Unidade 5 – Melhores Práticas de Programação – Slide 8

Evite ou não use em Java (e .net) Evite blocos privilegiados (privileged blocks) Padrão: if (obj.getClass().getName().equals("Admin")) { // executa aqui a operação privilegiada } Se for necessário, use: if (obj.getClass() == this.getClassLoader().loadClass("Admin")) { Evite atributos estáticos (static) Márcio Moreira Unidade 5 – Melhores Práticas de Programação – Slide 9

Evite ou não use em Java (e .net) Não use o mecanismo package para controle de acesso (eles normalmente são abertos) Não use string para armazenar senhas Use vetor de char e limpe o conteúdo após o uso Isto reduz a eficácia do memory dump Não use classes aninhadas (elas tornam-se acessíveis a todo o pacote) Não compare o nome de classes (isto revela informações que um espião não deve saber) Márcio Moreira Unidade 5 – Melhores Práticas de Programação – Slide 10

Unidade 5 – Melhores Práticas de Programação – Slide 11 Materiais adicionais Writing Secure Code – Best Practices Secure Programming – Java - SAP Programación Segura Strategies for Securing Java Technology Code Java & Secure Programming (Bad Examples found in JDK) Catálogo de Práticas de Programação Segura em Java Mechanisms for Secure Modular Programming in Java Security Code Guidelines - Sun Márcio Moreira Unidade 5 – Melhores Práticas de Programação – Slide 11