Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Segurança no Desenvolvimento WEB - Técnicas Profissionais

213 views

Published on

Desenvolvimento Seguro
.NET
SQL Server
Servidores web

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Segurança no Desenvolvimento WEB - Técnicas Profissionais

  1. 1. Segurança noSegurança no Desenvolvimento WebDesenvolvimento Web Rubens GuimarãesRubens Guimarães Especialista em Tecnologias para o MercadoEspecialista em Tecnologias para o Mercado rubens.guimaraes@e-seth.com.brrubens.guimaraes@e-seth.com.br
  2. 2. TecnologiaTecnologia A tecnologia é a grande resposta para a evolução do presente e do futuro. HojeA tecnologia é a grande resposta para a evolução do presente e do futuro. Hoje a tecnologia é conforto, é saúde, é facilidade, é diferencial competitivo e quema tecnologia é conforto, é saúde, é facilidade, é diferencial competitivo e quem souber melhor utilizá-la pode fazer a diferença.souber melhor utilizá-la pode fazer a diferença.
  3. 3. Tecnologia no PassadoTecnologia no Passado
  4. 4. PresentePresente
  5. 5. PresentePresente -Consumidor Atual dita as regras do mercado:Consumidor Atual dita as regras do mercado: -Mais exigente e informadoMais exigente e informado -Mais esclarecidosMais esclarecidos -Mais preocupado com a saúde, o bem estar e o meioMais preocupado com a saúde, o bem estar e o meio ambienteambiente -Dedica-se mais ao lazerDedica-se mais ao lazer Mercado:Mercado: -Leque de opções de produtos e serviçosLeque de opções de produtos e serviços -Proteção pela legislaçãoProteção pela legislação
  6. 6. Mercado AtualMercado Atual - As empresas buscam facilidades tecnológicas paraAs empresas buscam facilidades tecnológicas para atender suas demandas de negócios.atender suas demandas de negócios. Consumers, PartnersConsumers, Partners MobileMobile EmployeesEmployees CustomersCustomers PartnersPartners SuppliersSuppliers Consumers, PartnersConsumers, Partners MobileMobile EmployeesEmployees
  7. 7. Mercado AtualMercado Atual Maior exigência, maior complexidade, menor prazo.Maior exigência, maior complexidade, menor prazo. Desenvolvedores:Desenvolvedores: Se preocupam emSe preocupam em como desenvolver ascomo desenvolver as funcionalidadesfuncionalidades mas não commas não com o ambiente geral.o ambiente geral. Vivemos na Era do e-commerce – e-learning.Vivemos na Era do e-commerce – e-learning. Consumidores:Consumidores: Mais informadosMais informados Maior poder aquisitivoMaior poder aquisitivo Buscam facilidadesBuscam facilidades e confortos parae confortos para seu dia-a-dia.seu dia-a-dia.
  8. 8. Mercado de SoftwareMercado de Software •Caso o automóvel tivesse se desenvolvido como os computadores, um Rolls-Royce custaria US$100, faria um milhão de quilômetros por litro...
  9. 9. Mercado de SoftwareMercado de Software ...e explodiria uma vez por ano, matando TODOS os ocupantes!
  10. 10. Mercado de SoftwareMercado de Software 26% Sucesso 74% Falha Acima do Budget Custo médio: 189% do previsto Acima do Budget Custo médio: 189% do previsto Fora do prazo Tempo médio: 222% do previsto Fora do prazo Tempo médio: 222% do previsto Sem atender às expectativas Cobertura média: 61% do especificado Sem atender às expectativas Cobertura média: 61% do especificado 28% dos projetos são ABORTADOS!
  11. 11. O que as empresas de TI buscamO que as empresas de TI buscam Mas …………… Ainda existem problemas. E muitos.Mas …………… Ainda existem problemas. E muitos. Ferramentas comFerramentas com maior precisão nomaior precisão no ambiente de projetos.ambiente de projetos. Metodologias paraMetodologias para melhorar a qualidade demelhorar a qualidade de seus produtos.seus produtos.
  12. 12. Surpresa: Ninguém lembrou daSurpresa: Ninguém lembrou da Segurança!!!Segurança!!!
  13. 13. Por que Segurança?Por que Segurança? ““Em 2003 as perdas registradas foram de 201,7 bilhõesEm 2003 as perdas registradas foram de 201,7 bilhões de dólares; em 2004, esse total caiu para 141,4 bilhõesde dólares; em 2004, esse total caiu para 141,4 bilhões de dólares.”de dólares.” ““O Citibank foi vítima de um tipo de ataque,O Citibank foi vítima de um tipo de ataque, recentemente: uma fita de backup com informações derecentemente: uma fita de backup com informações de 3,9 mil clientes nos EUA foi extraviada durante o3,9 mil clientes nos EUA foi extraviada durante o transporte pela empresa de entregas expressas UPS.transporte pela empresa de entregas expressas UPS. Fonte: FBIFonte: FBI
  14. 14. Estrutura para Projetos WebEstrutura para Projetos Web LinguagensLinguagens SoftwaresSoftwares DesignDesign ArquiteturaArquitetura RequisitosRequisitos ProcessosProcessos PerformancePerformance SegurançaSegurança Navegabilidade e …Navegabilidade e … Banco deBanco de dadosdados ServidoresServidores RedeRede
  15. 15. ArquiteturaArquitetura
  16. 16. ArquiteturaArquitetura
  17. 17. ArquiteturaArquitetura Documente processosDocumente processos Compreenda as necessidades e objetivosCompreenda as necessidades e objetivos Desenhe o banco de dadosDesenhe o banco de dados Planeje classes, rotinas, processamentoPlaneje classes, rotinas, processamento Pense na segurançaPense na segurança Escolha os softwares que irá utilizarEscolha os softwares que irá utilizar
  18. 18. ImpactoImpacto dasdas ViolaçõesViolações dede SegurançaSegurança Perda de receita Danos à confiança do investidor Danos à reputação Perda ou comprometimento de dados Interrupção do processo de negócios Danos à confiança do cliente Conseqüências legais
  19. 19. Por que Segurança?Por que Segurança? -Proteção e disponibilidade de informações.-Proteção e disponibilidade de informações. -Aplicativos nunca devem depender e confiar no usuário.Aplicativos nunca devem depender e confiar no usuário. -Desenvolvimento por padrão com segurança.Desenvolvimento por padrão com segurança. -Exemplo: Entrada de dados ou SQL InjectionExemplo: Entrada de dados ou SQL Injection
  20. 20. Por que segurança?Por que segurança? Brechas de segurança reportadas nos últimos 12 meses Perdas financeiras reconhecidas Conexão Internet identificada como fonte freqüente de ataques Invasões reportadas às autoridades 90% Dados sobre Segurança e Crimes contra Computadores 80% 74% 34%
  21. 21. Como isto acontece?Como isto acontece? Gerenciamento de sessão 79% Vulnerabilidades Comuns Porcentagem de aplicativos que possuem “falhas de design" nas áreas indicadas Controle de acesso 64% Algoritmos de criptografia 61% Manipulação de parâmetro 73% Manipulação de dados confidenciais 41% Validação de entrada 32% Controles administrativos 36%
  22. 22. Proteger software requer equipe de TIProteger software requer equipe de TI qualificada e dedicadaqualificada e dedicada O software não estará seguro se a rede não estiverO software não estará seguro se a rede não estiver Administração é fundamental à segurançaAdministração é fundamental à segurança Software seguro também requerSoftware seguro também requer desenvolvedores qualificados e dedicadosdesenvolvedores qualificados e dedicados Administração apropriada será irrelevante se o códigoAdministração apropriada será irrelevante se o código escrito não for seguroescrito não for seguro A maioria dos desenvolvedoresA maioria dos desenvolvedores não sabenão sabe que escreveque escreve código insegurocódigo inseguro Faça a diferençaFaça a diferença
  23. 23. Exemplo de falhaExemplo de falha <form name="form1" method="post" action="insere.asp"><form name="form1" method="post" action="insere.asp"> <p>Nome:<p>Nome: <input name="nome" type="text" id="nome" size="50"><input name="nome" type="text" id="nome" size="50"> <input type="submit" name="Submit" value="Submit"><input type="submit" name="Submit" value="Submit"> </p></p> </form></form> <%<% teste = request.form("nome")teste = request.form("nome") response.Write testeresponse.Write teste %>%>
  24. 24. Exemplo de falhaExemplo de falha <script>document.location.replace ("http://www.paginaruim.com")</script> Ou <div style="display: none">
  25. 25. Correção para o ExemploCorreção para o Exemplo <%<% teste = trim(request.form("nome"))teste = trim(request.form("nome")) function Valida(teste)function Valida(teste) for i = 1 to len(teste)for i = 1 to len(teste) Letra = mid(teste, i, 1)Letra = mid(teste, i, 1) Select Case LetraSelect Case Letra Case ">","<","","'","!","&","(",")","?"Case ">","<","","'","!","&","(",")","?" Letra = ""Letra = "" Case "%"Case "%" Letra = ""Letra = "" End SelectEnd Select texto = texto & Letratexto = texto & Letra nextnext Valida = textoValida = texto end functionend function teste = Valida(teste)teste = Valida(teste) response.Write testeresponse.Write teste %>%>
  26. 26. Alguns SoftwaresAlguns Softwares - Internet Explorer Developer Toolbar- Internet Explorer Developer Toolbar - FxCop- FxCop Este programa efetua diversas verificações nos arquivos .EXE e .DLL deEste programa efetua diversas verificações nos arquivos .EXE e .DLL de seus programas e várias destas verificações são relacionadas àseus programas e várias destas verificações são relacionadas à segurança.segurança. Ele pode ser baixado do site www.gotdotnet.comEle pode ser baixado do site www.gotdotnet.com
  27. 27. SpoofingSpoofing Qualquer coisa que venha de um navegador Internet pode ser facilmenteQualquer coisa que venha de um navegador Internet pode ser facilmente falsificada em uma técnica conhecida em inglês como “spoofing”.falsificada em uma técnica conhecida em inglês como “spoofing”. É perfeitamente possível que seu programa receba dados que não foramÉ perfeitamente possível que seu programa receba dados que não foram colocados lá por nenhum usuário e sim por um programa malicioso.colocados lá por nenhum usuário e sim por um programa malicioso. Este programa malicioso pode ser feito facilmente apenas comEste programa malicioso pode ser feito facilmente apenas com conhecimentos de HTML, criando-se uma tag <FORM> que chama a suaconhecimentos de HTML, criando-se uma tag <FORM> que chama a sua página passando os dados desejados.página passando os dados desejados. Valide tudo que vier do navegador, como por exemplo:Valide tudo que vier do navegador, como por exemplo: ••Se as strings tem comprimento adequado; não confie no máximoSe as strings tem comprimento adequado; não confie no máximo especificado em uma tag <INPUT>especificado em uma tag <INPUT> ••Se o valor retornado por uma tag <SELECT> foi realmente colocado láSe o valor retornado por uma tag <SELECT> foi realmente colocado lá ••Se os radiobuttons são realmente mutuamente exclusivosSe os radiobuttons são realmente mutuamente exclusivos
  28. 28. ValidaValidando a entradando a entrada Filtrar caracteres potencialmente perigosos Usar HTML-encode para saídas em páginas Web Se possível, evitar uso de nomes de arquivos como entrada •Não permitir caracteres como "<" e "--" •Definir caracteres aceitáveis e recusar todos os demais Usar codificações de caracteres "seguras" <globalization requestEncoding="ISO-8859-1" responseEncoding="ISO-8859-1" />
  29. 29. Ataques comuns - REDESAtaques comuns - REDES Denial of serviceDenial of service Farejadores de pacotesFarejadores de pacotes PortasPortas REDESREDES
  30. 30. Ataques comuns - SERVIDORESAtaques comuns - SERVIDORES Acessos não-autorizadosAcessos não-autorizados Upload de arquivosUpload de arquivos Buffer overflows - execução deBuffer overflows - execução de códigos mal-intensionadoscódigos mal-intensionados SERVIDORESSERVIDORES
  31. 31. Ataques comuns - APLICATIVOSAtaques comuns - APLICATIVOS Farejador de tráfego para roubarFarejador de tráfego para roubar informaçõesinformações Sequestro de sessãoSequestro de sessão SQL InjectionSQL Injection Entrada de dados em formuláriosEntrada de dados em formulários APLICATIVOSAPLICATIVOS
  32. 32. Ameaças em DesktopsAmeaças em Desktops
  33. 33. Integrando o SDL no Processo deIntegrando o SDL no Processo de DesenvolvimentoDesenvolvimento Uso deUso de FerramentasFerramentas e Melhorese Melhores Praticas dePraticas de Desenv. eDesenv. e TesteTeste Criação deCriação de Docs eDocs e FerramentasFerramentas para opara o ProdutoProduto PrepararPreparar Plano dePlano de RespostaResposta SecuritySecurity PushPush TesteTeste Penet.Penet. RevisãoRevisão Final deFinal de SegurançaSegurança ManutençãoManutenção dede SegurançaSegurança e Respostae Resposta a Incidentesa Incidentes Lista de RecursosLista de Recursos Guias de QualidadeGuias de Qualidade Docs de ArquiteturaDocs de Arquitetura CronogramasCronogramas EspecificaçõesEspecificações Do DesignDo Design Teste e VerificaçãoTeste e Verificação DesenvolvimentoDesenvolvimento de Novo Códigode Novo Código Correção de BugsCorreção de Bugs Ass. doAss. do CódigoCódigo AprovaçãoAprovação FinalFinal Rel. Cand.Rel. Cand. RTMRTM Suporte aoSuporte ao ProdutoProduto Service Packs/Service Packs/ CorreçõesCorreções RequisitosRequisitos DesignDesign ImplementaçãoImplementação VerificaçãoVerificação LançamentoLançamento SuporteSuporte ee ManutençãoManutenção Treinamento de SegurançaTreinamento de Segurança Kickoff deKickoff de SegurançaSegurança e Registro come Registro com o SWIo SWI MelhoresMelhores PráticasPráticas de Designde Design Arquitetura deArquitetura de SegurançaSegurança ModelagemModelagem De AmeaçasDe Ameaças EspeficicaçõesEspeficicações FuncionaisFuncionais Tarefas e Processos Tradicionais no Desenvolvimento de Produtos da MicrosoftTarefas e Processos Tradicionais no Desenvolvimento de Produtos da Microsoft Tarefas Introduzidas pelo Processo de Desenvolvimento Seguro (SDL)Tarefas Introduzidas pelo Processo de Desenvolvimento Seguro (SDL)
  34. 34. Padrões de desenvolvimento seguroPadrões de desenvolvimento seguro A segurança deve fazer parte deA segurança deve fazer parte de todas as fases do projeto.todas as fases do projeto.
  35. 35. Padrões de desenvolvimento seguroPadrões de desenvolvimento seguro Crie o “Dia D” para encontrar falhasCrie o “Dia D” para encontrar falhas com a participação de toda a equipe.com a participação de toda a equipe.
  36. 36. Fase de RequisitosFase de Requisitos Oportunidade de considerar segurança desde o ínicioOportunidade de considerar segurança desde o ínicio Grupo Central de Segurança (SWI) designa um “SecurityGrupo Central de Segurança (SWI) designa um “Security Buddy”Buddy” Equipe de desenvolvimento identifica os requisitos deEquipe de desenvolvimento identifica os requisitos de segurançasegurança Security Buddy revisa os planos do produto, fazSecurity Buddy revisa os planos do produto, faz recomendações, garante que os recursos necessáriosrecomendações, garante que os recursos necessários foram alocados pela gerênciaforam alocados pela gerência Security Buddy avalia os milestones de segurança e osSecurity Buddy avalia os milestones de segurança e os critérios de saídacritérios de saída (NOTA: Este profissional vai ficar acompanhando o(NOTA: Este profissional vai ficar acompanhando o projeto até a Revisão Final de Segurança)projeto até a Revisão Final de Segurança)
  37. 37. DesignDesign Fase de Arquitetura e DesignFase de Arquitetura e Design Definir e documentar a arquitetura de segurançaDefinir e documentar a arquitetura de segurança Identificar componentes de segurança críticos (“trusted base”)Identificar componentes de segurança críticos (“trusted base”) Usar princípios de design seguro (camadas, código gerenciado,Usar princípios de design seguro (camadas, código gerenciado, menor privilégio, redução de superfície de ataque)menor privilégio, redução de superfície de ataque) Documentar superfície de ataque e reduzir a exposição dasDocumentar superfície de ataque e reduzir a exposição das configurações defaultconfigurações default Criar modelos de ameaça (identificar recursos, interfaces,Criar modelos de ameaça (identificar recursos, interfaces, ameaças, riscos) e mitigar ameaças usando controlesameaças, riscos) e mitigar ameaças usando controles Identificar ferramentas especializadas para testeIdentificar ferramentas especializadas para teste Definir metas de segurança adicionais que sejam específicasDefinir metas de segurança adicionais que sejam específicas para o produto (p. ex. testes de cross site scripting)para o produto (p. ex. testes de cross site scripting) Levar perguntas ao Security BuddyLevar perguntas ao Security Buddy Critério de Saída: Design completo revisado e aprovadoCritério de Saída: Design completo revisado e aprovado pelo time de desenvolvimentopelo time de desenvolvimento ee Security BuddySecurity Buddy
  38. 38. Modelagem de AmeaçasModelagem de Ameaças Componente mais importante do processo SDLComponente mais importante do processo SDL AbordagemAbordagem estruturadaestruturada usada para identificar ameaças aosusada para identificar ameaças aos recursos gerenciados pelo softwarerecursos gerenciados pelo software Captura e organização das informações suportadas porCaptura e organização das informações suportadas por uma ferramentauma ferramenta Feita inicialmente na fase de DesignFeita inicialmente na fase de Design Revisada durante o Security Push e Revisão Final deRevisada durante o Security Push e Revisão Final de Segurança (FSR)Segurança (FSR) Orienta o trabalho de todas as outras fasesOrienta o trabalho de todas as outras fases Permite que o design enderece os riscos de segurançaPermite que o design enderece os riscos de segurança Define os requisitos e recursos de segurançaDefine os requisitos e recursos de segurança Ajuda a priorizar os testes e revisões de códigoAjuda a priorizar os testes e revisões de código
  39. 39. Avaliação:Avaliação: AvaliarAvaliar ee QuantificarQuantificar Prioridades do recurso (escala de 1 a 10) 1. O servidor fornece funcionalidade básica mas não tem impacto financeiro nos negócios. 3. O servidor hospeda informações importantes, mas os dados podem ser recuperados rápida e facilmente. 5. O servidor contém dados importantes que precisam de tempo para serem recuperados. 8. O servidor contém informações importantes para as metas de negócios da empresa. A perda desse equipamento causaria um grande impacto na produtividade de todos os usuários. 10.O servidor causa um grande impacto no negócio da empresa. A perda desse equipamento poderia resultar em uma desvantagem competitiva.
  40. 40. Avaliação:Avaliação: IdentificarIdentificar AmeaçasAmeaças dede SegurançaSegurança Tipos de ameaças Exemplos Falsificação Falsificar mensagens de email Executar pacotes de autenticação Violação Alterar os dados durante a transmissão Alterar dados em arquivos Repudiação Excluir um arquivo crítico e negar que excluiu Comprar um produto e mais tarde negar que comprou Divulgação de informações Expor informações em mensagens de erro Expor código em sites Negação de serviço “Inundar” uma rede com pacotes SYN (Syn-Flood) “Inundar” uma rede com pacotes ICPM forçados Elevação de privilégios Explorar saturações do buffer para obter privilégios do sistema Obter privilégios de administrador de forma ilegítima
  41. 41. DesenvolvimentoDesenvolvimento Aplicação de padrões de codificação e testeAplicação de padrões de codificação e teste (exemplo: manipulação segura de strings)(exemplo: manipulação segura de strings) Aplicação de ferramentas de teste de “fuzzing”Aplicação de ferramentas de teste de “fuzzing” (input estruturado inválido para os parsers de(input estruturado inválido para os parsers de protocolo de rede e de formato de arquivo)protocolo de rede e de formato de arquivo) Aplicação de ferramentas de análise de códigoAplicação de ferramentas de análise de código estático (para achar, exemplo: estouros deestático (para achar, exemplo: estouros de buffer, estouros de inteiros, variáveis sembuffer, estouros de inteiros, variáveis sem inicialização)inicialização) Condução de revisões de códigoCondução de revisões de código
  42. 42. VerificaçãoVerificação Funcionalidade completa já no software eFuncionalidade completa já no software e entrada em Betaentrada em Beta Devido ao código estar completo, testarDevido ao código estar completo, testar tanto código novo e legadotanto código novo e legado ““Security Push”Security Push” Security push não é substituto para o trabalhoSecurity push não é substituto para o trabalho de segurança durante o desenvolvimentode segurança durante o desenvolvimento Security push fornece uma oportunidade deSecurity push fornece uma oportunidade de foco do time se esforçar em segurançafoco do time se esforçar em segurança Revisões de código (especialmente código legado/não alterado)Revisões de código (especialmente código legado/não alterado) Testes de penetração e outros testes de segurançaTestes de penetração e outros testes de segurança Revisão do design, arquitetura, modelos de ameaça tendo em vistaRevisão do design, arquitetura, modelos de ameaça tendo em vista novas ameaças e recursosnovas ameaças e recursos
  43. 43. Revisão Final de Segurança (RFS)Revisão Final de Segurança (RFS) ““Do ponto de vista de segurança, oDo ponto de vista de segurança, o software está pronto para ser entreguesoftware está pronto para ser entregue aos clientes?”aos clientes?” Dois a seis meses antes do lançamento do software,Dois a seis meses antes do lançamento do software, dependendo o escopo do produto.dependendo o escopo do produto. Software deve estar em um estado estável, com umSoftware deve estar em um estado estável, com um mínimo de outras mudanças esperadas até omínimo de outras mudanças esperadas até o lançamentolançamento Resultados do RFSResultados do RFS Aprovação ou não para lançamentoAprovação ou não para lançamento Foco nas fases anteriores caso um padrão deFoco nas fases anteriores caso um padrão de vulnerabilidades seja encontradovulnerabilidades seja encontrado
  44. 44. O que é a Revisao Final de Segurança?O que é a Revisao Final de Segurança? Preenchimento de um questionário pela equipe doPreenchimento de um questionário pela equipe do produtoproduto Entrevista por um membro do time de segurançaEntrevista por um membro do time de segurança designado para a RFSdesignado para a RFS Revisão de bugs que foram inicialmente identificadosRevisão de bugs que foram inicialmente identificados como sendo de segurança, mas que em análisecomo sendo de segurança, mas que em análise posterior foi visto que não tinham impacto deposterior foi visto que não tinham impacto de segurança, para garantir que a análise foi corretasegurança, para garantir que a análise foi correta Análise de qualquer nova vulnerabilidade reportadaAnálise de qualquer nova vulnerabilidade reportada afetando software similarafetando software similar Testes adicionais de penetração, possívelmente porTestes adicionais de penetração, possívelmente por agentes externos contratadosagentes externos contratados Revisão Final de Segurança (RFS)Revisão Final de Segurança (RFS)
  45. 45. Fatores de Sucesso paraFatores de Sucesso para Implementação do ProcessoImplementação do Processo Aplicação obrigatória do processo SDLAplicação obrigatória do processo SDL Educação obrigatória para os grupos de desenvolvimentoEducação obrigatória para os grupos de desenvolvimento Treinamento de todo o time, para cada funçãoTreinamento de todo o time, para cada função Definição das Métricas de Segurança em Todas as suasDefinição das Métricas de Segurança em Todas as suas FasesFases Estabelecimento de um Grupo Central de SegurançaEstabelecimento de um Grupo Central de Segurança Responsável pelo desenvolvimento, gerenciamento e melhorias doResponsável pelo desenvolvimento, gerenciamento e melhorias do processo SDLprocesso SDL Provisão para os Conselheiros de Segurança (“Security Buddies”)Provisão para os Conselheiros de Segurança (“Security Buddies”) Execução da Revisão Final de SegurançaExecução da Revisão Final de Segurança
  46. 46. Padrões de desenvolvimento seguroPadrões de desenvolvimento seguro Utilize Métricas.Utilize Métricas. ““Não se pode controlar o que não se pode medir”Não se pode controlar o que não se pode medir” Documente as exposições e ameaças em seuDocumente as exposições e ameaças em seu software e discuta soluções. Crie um manual desoftware e discuta soluções. Crie um manual de desenvolvimento seguro – Atualizável e disponíveldesenvolvimento seguro – Atualizável e disponível para sua equipe.para sua equipe. Conheça o servidor que irá hospedar sua aplicação.Conheça o servidor que irá hospedar sua aplicação. Crie segurança no ambiente de desenvolvimento.Crie segurança no ambiente de desenvolvimento.
  47. 47. Escolhendo a combinação certaEscolhendo a combinação certa Cenário 1: Aplicações IntranetCenário 1: Aplicações Intranet Maioria de acessos ocorre dentro do firewallMaioria de acessos ocorre dentro do firewall Atende a populações de usuários definidasAtende a populações de usuários definidas por contas de usuário Windowspor contas de usuário Windows Cenário 2: Aplicações InternetCenário 2: Aplicações Internet Maioria de acessos ocorre fora do firewallMaioria de acessos ocorre fora do firewall Atende a populações de usuáriosAtende a populações de usuários nãonão definidas por contas Windows (ex: eBay)definidas por contas Windows (ex: eBay)
  48. 48. Aplicações IntranetAplicações Intranet SQL Server Bob Alice Bill IIS ASP.NET Conta de Serviço Confiável Web Server Database Server Autenticação Windows Autenticação Windows Permissões SQL Funções do BD Permissões SQL Funções do BD Autenticação Windows Integrada Autenticação Windows Integrada Autorização ACL Autorização ACL Autenticação Windows Autenticação Windows IPSec A A A A A A
  49. 49. Aplicações InternetAplicações Internet SQL Server Bob Alice Bill IIS ASP.NET Conta de Serviço Confiável Web Server Database Server Autenticação Windows Autenticação Windows Permissões SQL Funções do BD Permissões SQL Funções do BD Permite anônimos (sem autenticação) Permite anônimos (sem autenticação) Autorização URL Autorização URL Autenticação Forms Autenticação Forms IPSec Firewall Firewall
  50. 50. AplicativosAplicativos
  51. 51. Testes - FuzzingTestes - Fuzzing Testes de Fuzzing: - protocol/file-format dependant - data-type dependant - for integers: zero, possibly negative or very big numbers - for chars: escaped, interpretable characters / instructions (ex: For SQL Requests, quotes / commands...) - for binary: random ones
  52. 52. Testes - FuzzingTestes - Fuzzing Application fuzzing: Whatever the fuzzed system is, the attack vectors are within it's I/O. For a desktop app: - the UI (testing all the buttons sequences / text inputs) - the command-line options - the import/export capabilities (see file format fuzzing below) For a web app: urls, forms, user-generated content, RPC requests, ...
  53. 53. Testes - FuzzingTestes - Fuzzing Protocol fuzzing: A protocol fuzzer sends forged packets to the tested application, or eventually acts as a proxy, modifying requests on the fly and replaying them. File format fuzzing: A file format fuzzer generates multiple malformed samples, and opens them sequentially. When the program crashes, debug information is kept for further investigation. One can attack: - the parser layer (container layer): file format constraints, structure, conventions, field sizes, flags, ... - the codec/application layer: lower-level attacks, aiming at the program's deeper internals One example of file format related vulnerabilities: MS04-028[2] (KB833987) Microsoft's JPEG GDI+ vulnerability was a zero sized comment field, without content.
  54. 54. Programação EstruturadaProgramação Estruturada -Utilize Classes -Centralize o código -Herança e reuso do código -Facilidade para expansão <!--#include file="includes/clsFornecedor.asp" --> <% html_titulo_secao = "GERENCIADOR DE FORNECEDORES" html_titulo="Plataforma " cadastrar = "cadastro_FornecedoresCadastrar.asp?refer=lista" set novo = new Fornecedor novo.fornecedor = trim(request("cod")) novo.fornecedorDeletar
  55. 55. Estouro de BufferEstouro de Buffer Um buffer é uma área de memória, usualmente um array usado para armazenar dados. Estourar um buffer significa escrever fora da área reservada. Pode parecer estranho que um problema de dados permita executar código, mas isto se deve ao fato das CPUs modernas – menos o Itanium – armazenarem os endereços de retorno na mesma área de memória - pilha - que as variáveis locais. Em alguns casos é possível causar um estouro de buffer tal que o endereço de retorno tenha algum valor de interesse do hacker. Quando a função termina, ela “volta” para aquele endereço que pode fazer algo inusitado, como aumentar os privilégios do usuário ou permitir enviar novos comandos.
  56. 56. Logins e Formulários SegurosLogins e Formulários Seguros function TiraAcento(busca2) for i = 1 to len(busca2) Letra = mid(busca2, i, 1) Select Case Letra Case ">","<","","'","!","&","(",")","$","=","?","%","","*" Letra = "" End Select texto = texto & Letra next TiraAcento = texto end function Function LimpaPalavras(input) dim lixo dim textoOK lixo = array ( "select" , "drop" , ";" , "--" , "insert" , "delete" , "xp_") textoOK = input for i = 0 to uBound(lixo) textoOK = replace( textoOK , lixo(i) , "") next LimpaPalavras = textoOK end Function
  57. 57. Criptografia e senhasCriptografia e senhas Criptografa: Set objCriptografia = New Criptografia criptografaSenha = objCriptografia.QuickEncrypt(senha, Application("numID")) Decriptografa: Set objCriptografia = New Criptografia criptografaSenha = objCriptografia.QuickDecrypt(senha, Application("numID")) Exibe na tela: Set objCriptografia = New Criptografia senha = objCriptografia.QuickDecrypt(rs("senha"), Application("numID"))
  58. 58. Validações adicionais e AjaxValidações adicionais e Ajax TMT Validator para validação cliente: http://www.massimocorner.com/libraries/validator/reference/index.htm Lembre-se de validar no cliente, na programação (classes), na rede e no banco de dados Ajax Frameworks: http://jquery.com
  59. 59. UmaUma EstruturaEstrutura OrganizacionalOrganizacional parapara SegurançaSegurança UsarUsar umauma abordagemabordagem emem camadas:camadas: AumentaAumenta a chancea chance dede detecçãodetecção dodo ataqueataque ReduzReduz aa chancechance dede êxitoêxito dodo ataqueataque Diretivas, procedimentos e conhecimento Diretivas, procedimentos e conhecimento FortalecimentoFortalecimento dodo SO,SO, gerenciamentogerenciamento de patch,de patch, autenticação,autenticação, IDS de hostIDS de host Firewalls,Firewalls, quarentenaquarentena dede VPNVPN Guardas,Guardas, travas,travas, dispositivosdispositivos dede controlecontrole SegmentosSegmentos dede rede,rede, IPSec,IPSec, IDS de redeIDS de rede FortalecimentoFortalecimento dodo aplicativo,aplicativo, antivírusantivírus ACL,ACL, criptografiacriptografia EducaçãoEducação dodo usuáriousuário Segurança físicaSegurança física PerímetroPerímetro Rede internaRede interna HostHost AplicativoAplicativo DadosDados
  60. 60. ExemplosExemplos String nome = Request [“nome”]; String senha = Request [“senha”]; sql = "select count * from usuarios where nome = '" & nome & "' and senha = '" & senha & "'" sql = "select count * from usuarios where nome = " or 1=1— " or 1=1-- corresponde a todos os registros da tabela e -- comenta o restante ignorando a senha
  61. 61. Sessões e TokensSessões e Tokens session("ID"&Session.SessionID) = Session.SessionIDsession("ID"&Session.SessionID) = Session.SessionID
  62. 62. Dicas GeraisDicas Gerais Mínimo de privilégiosMínimo de privilégios Valide a origem da páginaValide a origem da página Debug e Trace desativados no web.configDebug e Trace desativados no web.config Personalize errosPersonalize erros Nunca concatene dadosNunca concatene dados
  63. 63. Algumas dicas:Algumas dicas: Gerais:Gerais: - Não rode local system- Não rode local system - Utilize permissoes de users no sql server- Utilize permissoes de users no sql server - Nao rode SA no SQL e no Server. Crie contas personalizadas- Nao rode SA no SQL e no Server. Crie contas personalizadas - “c:Inetpubwwwroot” como “c:mkj7687hb7”- “c:Inetpubwwwroot” como “c:mkj7687hb7” - System.Security.Cryptography- System.Security.Cryptography - Jamais use a classe “System.Random”, use a classe- Jamais use a classe “System.Random”, use a classe “System.Security.Cryptography.RandomNumberGenerator”.“System.Security.Cryptography.RandomNumberGenerator”. - Veja uma possibilidade: o hash de uma string contendo o nome do- Veja uma possibilidade: o hash de uma string contendo o nome do usuário, mais a senha, mais “hikhj”.usuário, mais a senha, mais “hikhj”.
  64. 64. Algumas dicas:Algumas dicas: - Em aplicativos ASP.NET deixe as entradas de “DEBUG e TRACE”- Em aplicativos ASP.NET deixe as entradas de “DEBUG e TRACE” desabilitadas no arquivo CONFIG.desabilitadas no arquivo CONFIG. - Se você, por qualquer razão, decidir armazenar informações sensíveis- Se você, por qualquer razão, decidir armazenar informações sensíveis em campos escondidos ou cookies, encripte e/ou acrescente “hashes”em campos escondidos ou cookies, encripte e/ou acrescente “hashes” para garantir a integridade.para garantir a integridade.
  65. 65. HashHash Imports SystemImports System Imports System.Security.CryptographyImports System.Security.Cryptography Imports System.TextImports System.Text Module Module1Module Module1 Sub Main()Sub Main() Dim HashValue() As ByteDim HashValue() As Byte Dim MessageString As String = "This is the original message!"Dim MessageString As String = "This is the original message!" Dim UE As New UnicodeEncoding()Dim UE As New UnicodeEncoding() Dim MessageBytes As Byte() = UE.GetBytes(MessageString)Dim MessageBytes As Byte() = UE.GetBytes(MessageString) Dim SHhash As New SHA1Managed()Dim SHhash As New SHA1Managed() 'Create the hash value from the array of bytes.'Create the hash value from the array of bytes. HashValue = SHhash.ComputeHash(MessageBytes)HashValue = SHhash.ComputeHash(MessageBytes) 'Display the hash value to the console.'Display the hash value to the console. Dim b As ByteDim b As Byte For Each b In HashValueFor Each b In HashValue Console.Write("{0} ", b)Console.Write("{0} ", b) Next bNext b End SubEnd Sub End ModuleEnd Module
  66. 66. Acesso a DadosAcesso a Dados
  67. 67. ConexõesConexões <connectionStrings><connectionStrings> <add name="DatabaseConnection"<add name="DatabaseConnection" connectionString="Data Source=(local);InitialconnectionString="Data Source=(local);Initial Catalog=Northwind;Integrated Security=true;"Catalog=Northwind;Integrated Security=true;" KeyRestrictions="Encrypt=;Packet Size=;"KeyRestrictions="Encrypt=;Packet Size=;" KeyRestrictionBehavior="AllowOnly" />KeyRestrictionBehavior="AllowOnly" /> </connectionStrings></connectionStrings>
  68. 68. Bancos de DadosBancos de Dados -Existem várias formas de evitar injeção de tags. Uma delas é usar aExistem várias formas de evitar injeção de tags. Uma delas é usar a opção ValidateRequest do ASP.NETopção ValidateRequest do ASP.NET -Exemplo de falha com comandos SQL:Exemplo de falha com comandos SQL: select ProductID, ProductName, UnitPrice from products whereselect ProductID, ProductName, UnitPrice from products where ProductID = 2 or 1 =ProductID = 2 or 1 =
  69. 69. Acesso a DadosAcesso a Dados Utilize Stored Procedures estruturadas: Sub cadastrosDeletar sql = "exec teste " & tipo & "," & codParam & "" set rs = DbConn.Execute(sql) sql = TiraAcento(sql) sql = LimpaPalavras(sql) End Sub
  70. 70. Exception HandilingException Handiling Captura todas as exceções do SQL ServerCaptura todas as exceções do SQL Server Captura qualquer erro com o ajuste do @@errorCaptura qualquer erro com o ajuste do @@error Previne terminação de uma batchPrevine terminação de uma batch Modelo TRY / CATCHModelo TRY / CATCH O fluxo de controle desloca para CATCH erros fataisO fluxo de controle desloca para CATCH erros fatais de uma transaçãode uma transação Nenhuma perda do contexto da transaçãoNenhuma perda do contexto da transação Registra o estado quando os erros fatais àRegistra o estado quando os erros fatais à transação ocorremtransação ocorrem
  71. 71. Acesso a Dados – TRY CATCHAcesso a Dados – TRY CATCH GO ALTER PROCEDURE [dbo].[ArquivosCadastrar] @nomeArquivo varchar(300), @tipoArquivo varchar(50) AS BEGIN TRY BEGIN TRANSACTION insert NETArquivos (nomeArquivo, tipoArquivo) values (@nomeArquivo, @tipoArquivo) COMMIT END TRY BEGIN CATCH IF @@TRANCOUNT > 0 ROLLBACK DECLARE @ErrMsg varchar(4000), @ErrSeverity int SELECT @ErrMsg = ERROR_MESSAGE(), @ErrSeverity = ERROR_SEVERITY() RAISERROR(@ErrMsg, @ErrSeverity, 1) END CATCH
  72. 72. Exception HandilingException Handiling Detalhes dos erros estão disponíveis aDetalhes dos erros estão disponíveis a qualquer momento dentro do bloco CATCHqualquer momento dentro do bloco CATCH Error_number()Error_number() Error_message()Error_message() Error_severity()Error_severity() Error_state()Error_state() Error_procedure()Error_procedure() Error_line()Error_line()
  73. 73. OUTPUTOUTPUT Como utilizar o recurso OUTPUTComo utilizar o recurso OUTPUT Declarar as variáveis da tabela avaliadaDeclarar as variáveis da tabela avaliada11 DECLARE @InsertDetails TABLE (ProductID int, InsertedBy sysname) Utilize OUTPUT para retornar detalhes para a variável Utilize OUTPUT para retornar detalhes para a variável22 DECLARE @InsertDetails TABLE (ProductModelID int, InsertedBy sysname) INSERT INTO Production.ProductModel(Name, ModifiedDate) OUTPUT inserted.ProductModel ID, suser_name() INTO @InsertDetails VALUES ('Racing Bike', getdate()) SELECT * FROM @InsertDetails
  74. 74. Acesso a Dados – OUTPUTAcesso a Dados – OUTPUT ALTER PROCEDURE [dbo].[unidadesCadastrar] @nomeUnidade varchar(200), @razaoSocial varchar(200) AS BEGIN TRANSACTION tran01 BEGIN insert unidades (nomeUnidade, razaoSocial) output inserted.codunidade values (@nomeUnidade, @razaoSocial) END declare @cod int select @cod = SCOPE_IDENTITY() insert colaboradores (codUnidade, nomeColaborador, codCargo) values (@cod, 'Diretor', '1') IF @@ERROR <> 0 ROLLBACK TRANSACTION tran01 ELSE COMMIT TRANSACTION tran01
  75. 75. Acesso a Dados – ARRAYAcesso a Dados – ARRAY BEGIN SET NOCOUNT ON DECLARE @ARRAY VARCHAR(500), @DELIMITADOR VARCHAR(1), @S VARCHAR(500) SELECT @DELIMITADOR = ',' IF LEN(@codModulo) > 0 SET @codModulo = @codModulo + @DELIMITADOR WHILE LEN(@codModulo) > 0 BEGIN SELECT @S = LTRIM(SUBSTRING(@codModulo, 1, CHARINDEX(@DELIMITADOR, @codModulo) - 1)) insert crmInteresse (codCRM, codInteresse) values (@cod, @S) SELECT @codModulo = SUBSTRING(@codModulo, CHARINDEX(@DELIMITADOR, @codModulo) + 1, LEN(@codModulo)) END SET NOCOUNT OFF
  76. 76. SQL Server 2005 -SQL Server 2005 - Iniciativas de SegurançaIniciativas de Segurança Foco em segurança, privacidade e ferramentasFoco em segurança, privacidade e ferramentas Características avançadas de segurançaCaracterísticas avançadas de segurança AutenticaçãoAutenticação Usuário & senhaUsuário & senha CertificadosCertificados AutorizaçãoAutorização PermissõesPermissões CriptografiaCriptografia Chave simétricaChave simétrica Chave assimétricaChave assimétrica Melhorias na instalaçãoMelhorias na instalação Integração com o Microsoft Update ServicesIntegração com o Microsoft Update Services
  77. 77. Criptografia noCriptografia no SQL ServerSQL Server Hierarquia de chaves no SQL Server 2005Hierarquia de chaves no SQL Server 2005
  78. 78. Autenticação e PolicyAutenticação e Policy Password Policy no SQL Server 2005Password Policy no SQL Server 2005 Exige Windows Server 2003Exige Windows Server 2003 Windows AuthenticationWindows Authentication Logins de usuários do WindowsLogins de usuários do Windows Reforça a Política para senha do domínioReforça a Política para senha do domínio SQL Server AuthenticationSQL Server Authentication  Logins do SQL ServerLogins do SQL Server  Reforça a partir daReforça a partir da política para senhas dapolítica para senhas da máquina localmáquina local
  79. 79. ServidoresServidores
  80. 80. Protegendo o hProtegendo o hostost Usar os service packs e as atualizações mais recentes Fortalecer o IIS executando o IISLockdown Fortalecer o IIS instalando o URLScan •Desativa o FTP, o SMTP e o NNTP •Remove mapeamentos de script chave, como .idq, .htr e .printer •Remove IISSamples, IISHelp, Scripts e outros diretórios virtuais •Ferramentas do sistema de ACLs e diretórios de conteúdo da Web para limitar acesso •Desativa o WebDAV •Instala o URLScan •Registra (Loga) falha nas solicitações •Limita o tamanho das solicitações para reduzir ataques DoS •Mascara cabeçalhos de conteúdo informando o tipo e o número de versão do IIS •Bloqueia solicitações com caracteres potencialmente perigosos (por exemplo, pontos em nomes de caminhos) •Autoriza e verifica nomes de caminhos para bloquear ataques a diretórios •Desativa verbos especificos (por exemplo, "DEBUG")
  81. 81. Protegendo o hProtegendo o hostost Fortalecer a TCP/IP stack do servidor Web •http://msdn.microsoft.com/library/en-us/dnnetsec/html/HTHardTCP.asp Executar o ASP.NET usando o princípio de privilégio reduzido •Evitar executá-lo como SYSTEM •Considere uma execução com confiança parcial Limitar o tamanho dos uploads de arquivos <configuration> <system.web> <!-- Limit request length to 128K (default = 4 MB) --> <httpRuntime maxRequestLength="128" /> </system.web> </configuration>
  82. 82. Protegendo o hProtegendo o hostost Desativar compartilhamentos e serviços não utilizados Fortalecer contas de usuário •Excluir compartilhamentos não essenciais e restringir acesso a outros •Desativar serviços e protocolos não essenciais (por exemplo, SMB e NetBIOS) •Remover ou proteger o RDS (Remote Data Services) •Desativar a conta de convidado (Guest) •Usar senhas complexas (fortes) em todas as contas •Renomear a conta de administrador •Desabilitar sessões nulas (logons anônimos) •Restringir logons remotos apenas aos usuários que precisem usá-los Ser agressivo com relação a registro e auditorias •Registrar tentativas de logon com falha •Registrar ações que apresentarem falhas em qualquer local do sistema •Proteger arquivos de log IIS com permissões NTFS •Auditorar acesso a Metabase.bin
  83. 83. Protegendo o hProtegendo o hostost Usar ACLs para limitar o acesso a recursos importantes •Restringir o acesso ao diretório %systemroot%System32 •Restringir o acesso a %systemroot%Microsoft.NETFramework •Restringir o acesso de gravação a %systemroot%System32Logfiles •Restringir o acesso de gravação a diretórios de conteúdo da Web •Restringir o acesso a chaves de registro (registry keys ) no qual estejam armazenados dados confidenciais Proteger o diretório bin •Remover todas as permissões da Web (Leitura, Gravação e Pesquisa em diretórios) do bin •Definir a permissão Execute (Executar) como None (Nenhuma) no bin •Não permitir acesso anônimo nem autenticado ao bin Consulte http://msdn.microsoft.com/library/en-us/dnnetsec/html/- THCMCh19.asp?frame=true#c19618429_025 para obter informações sobre permissões NTFS exigidas pelo ASP.NET
  84. 84. Executando com privilégioExecutando com privilégio mínimomínimo NãoNão executarexecutar ASP.NETASP.NET comocomo SYSTEMSYSTEM Executá-loExecutá-lo comocomo ASPNET (IIS 5)ASPNET (IIS 5) Executá-lo comoExecutá-lo como Network Service (IIS 6)Network Service (IIS 6) Executá-loExecutá-lo como conta personalizadacomo conta personalizada (IIS 5(IIS 5 ee 6)*6)* ConsiderConsiderar executar com confiançaar executar com confiança parparccialial PadrãoPadrão == confiança totalconfiança total (full thrust)(full thrust) Code access security (CAS) sandboxingCode access security (CAS) sandboxing ASP.NET 1.1ASP.NET 1.1 somentesomente ** ConsulteConsulte "How to Create a Custom Account to Run ASP.NET" (http://msdn.microsoft.com/library/default.asp?-"How to Create a Custom Account to Run ASP.NET" (http://msdn.microsoft.com/library/default.asp?- url=/library/en-us/dnnetsec/html/SecNetHT01.asp)url=/library/en-us/dnnetsec/html/SecNetHT01.asp) para obter mais detalhesspara obter mais detalhess
  85. 85. Defendendo credenciais doDefendendo credenciais do processo (processo (Process Credentials)Process Credentials) NoNo IIS 5, use Aspnet_setregIIS 5, use Aspnet_setreg para dar segurançapara dar segurança às credencàs credenciaisiais do procdo processoesso de contasde contas personalizadaspersonalizadas ASP.NET 1.1ASP.NET 1.1 somentesomente; hotfix; hotfix parapara 1.01.0 <processModel ... userName="registry:HKLMSOFTWAREMyAppIdentityASPNET_SETREG,userName" password="registry:HKLMSOFTWAREMyAppIdentityASPNET_SETREG,password" /> Machine.config Registry
  86. 86. “900 million viruses and 52.4 billion spam messages are sent per day. Virus traffic has increased by 80% in 2005! Most viruses are designed to propagate themselves through email… In 2005, 86% of viruses used email as a self-propagation medium…” -- The Radicati Group, Inc., E-mail Security: Appliances, Software and Services, 2005 - 2009 900 milhões de virus enviados por dia900 milhões de virus enviados por dia 52.4 bilhões (that’s a “B”) spam messages por dia52.4 bilhões (that’s a “B”) spam messages por dia 85% dos virus e worms são propagados através de e-85% dos virus e worms são propagados através de e- mailmail
  87. 87. 23:15 21:38 21:33 21:27 21:18 20:46 20:24 19:54 18:49 18:44 18:18 18:18 18:14 17:38 17:27 17:19 16:56 16:54 16:39 eTrust-VET McAfee Avast AVG Trend Micro Norman AntiVir eTrust- INO Panda VirusBuster Fortinet F-Secure Ikarus Command Sophos BitDefender AVK F-Prot Kaspersky Signature Updates – HistorySignature Updates – History 19:15 13:05 12:35 09:05 06:00 05:50 05:00 05:00 04:35 04:35 04:10 04:10 02:30 01:40 01:20 00:15 00:05 23:35 F-Prot F-Secure AntiVir Norman Panda Quickheal Bitdefender McAfee Symantec Kaspersky Dr. Web RAV eTrust-VET Sophos eTrust-INO AVG Virusbuster TrendMicro Mydoom.dll DetectionMydoom.dll Detection TimeTime January 26-27, 2004 (GMT)January 26-27, 2004 (GMT) AV-Test.org Jan 2004 Time of Day Hour : Minute Note: these charts represents single virus outbreaks only. They do not represent average response times for each listed antivirus lab. AntigenAntigen EnginesEngines Jan 27 Jan 26 Sober.P Virus DetectionSober.P Virus Detection TimeTime May 2, 2005 (GMT)May 2, 2005 (GMT) Time of Day Hour : Minute AV-Test.org May 2005
  88. 88. 91 Systems Management Content Identity Management Guidance Developer Tools Federation Services Services Client & Server OS Edge Network Access Protection (NAP) Server Applications
  89. 89. O que é o IIS ?O que é o IIS ? Componentes do IIS no Windows Server 2003 •WEB (Servidor de Paginas) •FTP (Serviço de troca de Arquivos) •NNTP (Grupo de Discussão - NEWS) •SMTP (Envio de Correio Eletrônico) • POP3 (Recebimento de Correio Eletrônico) ~~~ ~~~ ~~~~~~ ~~~ ~~~ ~~~ ~~~ ~~~ Intranet Internet
  90. 90. Instalação PadrãoInstalação PadrãoWindows Server 2003 desabilita + de 20 serviços por padrãoWindows Server 2003 desabilita + de 20 serviços por padrão IIS não é instalado por padrão no Windows Server 2003IIS não é instalado por padrão no Windows Server 2003 Se você instalar o IIS ...Se você instalar o IIS ... Componentes IIS5 Inst. Padrão IIS 6 Inst. Padrão Static file support habilitado habilitado ASP habilitado Desabilitado Server-side includes habilitado Desabilitado Internet Data Connector habilitado Desabilitado WebDAV habilitado Desabilitado Index Server ISAPI habilitado Desabilitado Internet Printing ISAPI habilitado Desabilitado CGI Habilitado Desabilitado Frontpage Server Extensions Habilitado Desabilitado Password Change Functionality Habilitado Desabilitado SMTP Habilitado Desabilitado FTP habilitado Desabilitado ASP.NET X Desabilitado
  91. 91. DLLHost.EX E ISAPI Extensions DLLHost.EX E ISAPI Extensions Arquitetura IIS5Arquitetura IIS5 TCP/IP kernel user WinSock 2.0 INETINFO.EX E Metabase ISAPI Filters and Extensions DLLHost.EX E ISAPI Extensions INETINFO.EX E MetabaseMetabase ISAPI Filters and Extensions
  92. 92. Arquitetura IIS6Arquitetura IIS6 O que é um Application Pool ?O que é um Application Pool ? Um grupo de uma ou mais url´s executadas por umUm grupo de uma ou mais url´s executadas por um worker processworker process Permite você:Permite você: Aplicar configurações para grupo de aplicações/sitesAplicar configurações para grupo de aplicações/sites Isolar aplicações, cliente, nível de funcionalidade, ouIsolar aplicações, cliente, nível de funcionalidade, ou requisitos de disponibilidaderequisitos de disponibilidade O que é um Worker Process ?O que é um Worker Process ? Processo do IIS6 que executa toda a requisição, asProcesso do IIS6 que executa toda a requisição, as requisições não passam mais pelo inetinfo.exe comorequisições não passam mais pelo inetinfo.exe como no IIS5.no IIS5. Web GardenWeb Garden Um application pool que utiliza mais de um workerUm application pool que utiliza mais de um worker processprocess PerformancePerformance
  93. 93. Arquitetura IIS6Arquitetura IIS6 User modeUser mode Kernel modeKernel mode Application pools HTTP.SYS W3WP.exe W3Core All Apps (no OOP) ISAPI Filters W3WP.exe W3Core All Apps (no OOP) ISAPI Filters W3WP.exe W3Core ASP.NET Apps .NET App Domain INETINFO.exe FTP Metabase SMTP NNTP SVCHOST.exe W3 Config Mgr W3 Process Mgr W3SVC
  94. 94. Arquitetura IIS6Arquitetura IIS6 AdministrationAdministration && MonitoringMonitoring AdministrationAdministration && MonitoringMonitoring WWW ServiceWWW Service HTTP CacheCacheQueueQueue Kernel modeKernel mode User modeUser mode XMLXML MetabaseMetabase InetinfoInetinfo FTPFTPFTPFTP NNTPNNTPNNTPNNTP SMTPSMTPSMTPSMTP IIS 6.0IIS 6.0 RequestRequest ResponseResponse Application Pools …… XX
  95. 95. Arquitetura IIS6Arquitetura IIS6 Web Administration Service (W3SVC)Web Administration Service (W3SVC) • Gerencia os worker processesGerencia os worker processes • Quando inicializado:Quando inicializado: • Constroi tabela de rotamento para o http.sysConstroi tabela de rotamento para o http.sys • Inicia os worker processesInicia os worker processes • Gerencia os worker processesGerencia os worker processes • Monitora a saúde dos processosMonitora a saúde dos processos • Inicia/Para, recicla os processosInicia/Para, recicla os processos • Não processa requisiçõesNão processa requisições
  96. 96. Arquitetura IIS6Arquitetura IIS6 Reciclagem de Application PoolReciclagem de Application Pool Reciclagem quando: X minutos ativo Após X requisições Em um determinado horario.
  97. 97. Arquitetura IIS6Arquitetura IIS6 Reciclagem de Application PoolReciclagem de Application Pool Recicla após uso de memoria.
  98. 98. Arquitetura IIS6Arquitetura IIS6 Monitoramento de saúdeMonitoramento de saúde Tempo que verificação do processo – WAS Verifica worker processes
  99. 99. Arquitetura IIS6Arquitetura IIS6 Monitoramento de saúdeMonitoramento de saúde Habilita Rapid Fail Protection e especifica Parâmetros
  100. 100. Arquitetura IIS6Arquitetura IIS6 Monitoramento de saúdeMonitoramento de saúde Tempo limite de startup Tempo limite para shutdown
  101. 101. Arquitetura IIS6Arquitetura IIS6 Recomendações - Application PoolRecomendações - Application Pool • Criar application pool específicos para sitesCriar application pool específicos para sites críticoscríticos • Usar o mesmo application pool, para sites nãoUsar o mesmo application pool, para sites não críticos, e simples quando possívelcríticos, e simples quando possível • Economia de recursos do servidorEconomia de recursos do servidor • Sites/Aplicações de um determinado clienteSites/Aplicações de um determinado cliente • Criar um application pool chamado “Timeout”Criar um application pool chamado “Timeout” • Configurar valores agressivos de reciclagemConfigurar valores agressivos de reciclagem (horário, requisições)(horário, requisições) • Colocar sites problemáticos neste Application PoolColocar sites problemáticos neste Application Pool
  102. 102. Arquitetura IIS6Arquitetura IIS6 Comparação dos modos de isolaçãoComparação dos modos de isolação IIS Function IIS 5.0 IIS 5.0 IM WP IM Manage IIS Metabase inetinfo.exe inetinfo.exe inetinfo.exe http.sys configuration N/A W3SVC W3SVC Worker process management N/A N/A W3SVC Worker process N/A N/A w3wp.exe Running in-process ISAPI extensions inetinfo.exe inetinfo.exe w3wp.exe Running out-of-process ISAPI extensions dllhost.exe dllhost.exe N/A Running ISAPI filters inetinfo.exe inetinfo.exe w3wp.exe HTTP protocol support Inetinfo via Winsock http.sys http.sys FTP, NNTP, SMTP inetinfo.exe inetinfo.exe inetinfo.exe
  103. 103. Arquitetura IIS6Arquitetura IIS6 Modos de isolação padrãoModos de isolação padrão • Padrões diferentes, baseados na instalaçãoPadrões diferentes, baseados na instalação • Nova instalação: Worker ProcessNova instalação: Worker Process • Upgrade de IIS 4.0 ou 5.0: IIS 5.0Upgrade de IIS 4.0 ou 5.0: IIS 5.0 • Upgrade de IIS 6.0: Modo é preservadoUpgrade de IIS 6.0: Modo é preservado • Recomendações de Upgrade :Recomendações de Upgrade : • Configurar um novo computador rodando IIS 6.0 noConfigurar um novo computador rodando IIS 6.0 no modo de isolação Worker Processmodo de isolação Worker Process • Testar aplicações neste novo computadorTestar aplicações neste novo computador • Migrar aplicações para este servidor após terminoMigrar aplicações para este servidor após termino dos testesdos testes
  104. 104. Gerenciando Web SitesGerenciando Web Sites Publicação de Web Sites no IIS 6.0Publicação de Web Sites no IIS 6.0 • Publicação de sites Web similar ao IIS 5.0Publicação de sites Web similar ao IIS 5.0 • Mesmas opções de configuraçãoMesmas opções de configuração • Propriedades Master movida de lugarPropriedades Master movida de lugar • Web Sites object (antes era no Server object)Web Sites object (antes era no Server object) • Maiores mudanças são:Maiores mudanças são: • Flexibilidade através do uso de application poolsFlexibilidade através do uso de application pools • Instalação ModularInstalação Modular • Suporte a NAS (Network Area Storage)Suporte a NAS (Network Area Storage) • Storage (Discos) – Acesso via rede (custo mais baixo queStorage (Discos) – Acesso via rede (custo mais baixo que fibra)fibra) • Suporte a Extensões do FrontPage - FPSE 2002Suporte a Extensões do FrontPage - FPSE 2002
  105. 105. Gerenciando FTP SitesGerenciando FTP Sites Serviço de FTP no IIS 6.0Serviço de FTP no IIS 6.0 • FTP é o mesmo do IIS 5.0FTP é o mesmo do IIS 5.0 • Uma grande alteração: Modo de isolação de FTPUma grande alteração: Modo de isolação de FTP • Acontecimentos nas versões anteriores:Acontecimentos nas versões anteriores: • Usuários podiam navegar acima de sua pastaUsuários podiam navegar acima de sua pasta • Segurança requeria acerto de permissões em muitas pastasSegurança requeria acerto de permissões em muitas pastas • Modo de isolação de FTPModo de isolação de FTP • Faz com que a pasta do usuário se torne a raiz (principal).Faz com que a pasta do usuário se torne a raiz (principal). • Previne navegação a diretórios acimaPrevine navegação a diretórios acima • Torna controle de permissões muito mais fáceis.Torna controle de permissões muito mais fáceis.
  106. 106. Metabase IIS6Metabase IIS6 NovidadesNovidades IIS 4.0 IIS 5.0 IIS 6.0 Estrutura Binary XML Atualização de configuração Reboot the server Restart IIS On the fly Edição MetaEdit.exe ADSI scripts Text editors ADSI scripts Metabase Explorer Disaster recovery Not automatic Automatic History Simplified Backup and Restore Configurações para copia Metabase is machine-specific (SID) All non-machine-specific properties can be copied to any other IIS 6.0 server
  107. 107. Gerenciando o MetabaseGerenciando o Metabase Evolução do MetabaseEvolução do Metabase • Metabase contém a configuração do IISMetabase contém a configuração do IIS • Metabase do IIS 4.0 e 5.0 :Metabase do IIS 4.0 e 5.0 : • Formato proprietárioFormato proprietário • Dificuldade para gerenciarDificuldade para gerenciar • Metabase do IIS 6.0 :Metabase do IIS 6.0 : • Formato XMLFormato XML • Fácil para ler e editar com editores de textoFácil para ler e editar com editores de texto • Arquivos do Metabase do IIS6:Arquivos do Metabase do IIS6: • mbschema.xml e metabase.xmlmbschema.xml e metabase.xml
  108. 108. Gerenciando o MetabaseGerenciando o Metabase EstruturaEstrutura XMLXML • Elemento: Uma unidade lógica de informaçãoElemento: Uma unidade lógica de informação • Entre as tags <Nome do Elemento> e <Nome do Elemento>Entre as tags <Nome do Elemento> e <Nome do Elemento> • Exemplo: <IISWebService>…</IISWebService>Exemplo: <IISWebService>…</IISWebService> • AtributosAtributos • Nome/valorNome/valor • Prove mais informação sobre o elementoProve mais informação sobre o elemento • Atributos são parâmetros de configuraçãoAtributos são parâmetros de configuração • Exemplo: AnonymousUserName=“IUSR_SRV1”Exemplo: AnonymousUserName=“IUSR_SRV1” • Um atributo do elemento <IISWebService>Um atributo do elemento <IISWebService>
  109. 109. Gerenciando o MetabaseGerenciando o Metabase Histórico do MetabaseHistórico do Metabase • Backup automáticoBackup automático • Editar o metabase enquanto rodandoEditar o metabase enquanto rodando • Se o metabase é gravado em disco:Se o metabase é gravado em disco: • Uma copia é gravada na pasta HistoryUma copia é gravada na pasta History • Cada versão é marcada com um numero únicoCada versão é marcada com um numero único • Valor máximo de arquivos de histórico está no atributoValor máximo de arquivos de histórico está no atributo MaxHistoryFiles dentro do metabaseMaxHistoryFiles dentro do metabase • Fácil para recuperarFácil para recuperar • Servidor | All Tasks | Backup/Restore ConfigurationServidor | All Tasks | Backup/Restore Configuration • Faça um teste e recupere o backupFaça um teste e recupere o backup • Teste suas aplicações, salve um backup e teste oTeste suas aplicações, salve um backup e teste o restorerestore
  110. 110. Gerenciando o MetabaseGerenciando o Metabase Configuração padrãoConfiguração padrão • Você pode salvar a configuração do IIS paraVocê pode salvar a configuração do IIS para um arquivoum arquivo • Salvar de qualquer site WEB/FTPSalvar de qualquer site WEB/FTP • Importar templates para criar objetos do IISImportar templates para criar objetos do IIS • Importação simples para valores padrão de sitesImportação simples para valores padrão de sites WEB/FTPWEB/FTP • Exportar a configuração do servidor IISExportar a configuração do servidor IIS • Recuperação do IIS no mesmo servidorRecuperação do IIS no mesmo servidor • Clonar computadoresClonar computadores
  111. 111. Gerenciando o MetabaseGerenciando o Metabase Auditoria – Novidade do Windows 2003 SP1Auditoria – Novidade do Windows 2003 SP1 Com o Windows 2003 SP1 é possível auditar as alterações noCom o Windows 2003 SP1 é possível auditar as alterações no metabase do IISmetabase do IIS Para habilitar :Para habilitar : Habilitar em Local security settings / Audit Policy / Audit objectHabilitar em Local security settings / Audit Policy / Audit object accessaccess Auditar eventos de sucesso e falha.Auditar eventos de sucesso e falha. Executar cscript.exe iiscnfg.vbs /enableAudit / /rExecutar cscript.exe iiscnfg.vbs /enableAudit / /r Onde / é o site para ser “auditado”, no exemplo acima, todosOnde / é o site para ser “auditado”, no exemplo acima, todos sites serão auditados.sites serão auditados. /r (Recursivo) , chaves acima/r (Recursivo) , chaves acima Para ver a alteração – Event Viewer - SecurityPara ver a alteração – Event Viewer - Security
  112. 112. Administração por linha de comandoAdministração por linha de comando Scripts nativosScripts nativos • iisweb.vbs: Gerenciamento de web siteiisweb.vbs: Gerenciamento de web site • iisftp.vbs: Gerenciamento de FTPiisftp.vbs: Gerenciamento de FTP • iisvdir.vbs: Gerenciamento de Virtual directoryiisvdir.vbs: Gerenciamento de Virtual directory WEBWEB • iisftpdr.vbs: Gerenciamento de Virtual directoryiisftpdr.vbs: Gerenciamento de Virtual directory FTPFTP
  113. 113. Administração por linha de comandoAdministração por linha de comando Scripts nativosScripts nativos • iisback.vbs: Gerenciamento do backup do IISiisback.vbs: Gerenciamento do backup do IIS • iiscnfg.vbs: Importa / Exporta elementosiiscnfg.vbs: Importa / Exporta elementos • iisext.vbs: Gerenciamento de Extensões WEBiisext.vbs: Gerenciamento de Extensões WEB do IISdo IIS • iisapp.vbs: Gerenciamento de application poolsiisapp.vbs: Gerenciamento de application pools • iisreset.exe: Reinicia todos serviços do IISiisreset.exe: Reinicia todos serviços do IIS
  114. 114. Microsoft Web Stress ToolMicrosoft Web Stress Tool Ambiente de testesAmbiente de testes Microsoft Web Stress ToolMicrosoft Web Stress Tool Grava navegação no site, repete por determinadoGrava navegação no site, repete por determinado períodoperíodo Teste de carga ao servidor(es) WEBTeste de carga ao servidor(es) WEB Teste de aplicação para verificar se existe linksTeste de aplicação para verificar se existe links quebradosquebrados Relatórios com numero de requisições atendidas,Relatórios com numero de requisições atendidas, numero de requisições com erro, paginas nãonumero de requisições com erro, paginas não encontradas, erros por autenticaçãoencontradas, erros por autenticação
  115. 115. Troubleshooting – IIS6Troubleshooting – IIS6 Resolução de problemas comuns no IIS6Resolução de problemas comuns no IIS6 Site solicitando senhaSite solicitando senha Usuário do IIS / Permissão NTFS KB812614Usuário do IIS / Permissão NTFS KB812614 (Default Permissions)(Default Permissions) Filemonitor –Filemonitor – www.sysinternals.comwww.sysinternals.com Pagina não encontradaPagina não encontrada Verificar mime-types KBVerificar mime-types KB326965326965 Problemas de Hang/CrashProblemas de Hang/Crash Debug Diag, IISDebugTools, IISState,Debug Diag, IISDebugTools, IISState, ADPLUS KB286350ADPLUS KB286350
  116. 116. Tipo de Erro Descrição Dica Conteúdo Aplicação nega acesso a recursos Verificar se usuário que o IIS está sendo executado Requisições para conteúdo dinâmico retorna erro 404 e Verificar se extensão esta habilitada no IIS Requisições para arquivos estáticos retornam erro 404 Procurar por arquivos com extensão desconhecida. Termino de sessão da aplicação Verifique se o valor para recycle padrão esta para 1740 minutes Conexão Cliente recebe erro 503 Procurar por problemas na fila do application pool Clientes não podem se conectar ao servidor Verificar se o firewall esta habilitado Troubleshooting – IIS6Troubleshooting – IIS6
  117. 117. TroubleshootingTroubleshooting Links dos SoftwaresLinks dos Softwares WebStress ToolWebStress Tool http://www.microsoft.com/downloads/details.aspx?FamilyID=E2C0585A-062A-439E-A67D-http://www.microsoft.com/downloads/details.aspx?FamilyID=E2C0585A-062A-439E-A67D- 75A89AA36495&displaylang=en75A89AA36495&displaylang=en IIS Diagnostics ToolIIS Diagnostics Tool http://www.microsoft.com/downloads/details.aspx?familyid=9BFA49BC-376B-4A54-95AA-http://www.microsoft.com/downloads/details.aspx?familyid=9BFA49BC-376B-4A54-95AA- 73C9156706E7&displaylang=en73C9156706E7&displaylang=en IIS6 Resource KitIIS6 Resource Kit http://www.microsoft.com/downloads/details.aspx?familyid=56FC92EE-A71A-4C73-B628-http://www.microsoft.com/downloads/details.aspx?familyid=56FC92EE-A71A-4C73-B628- ADE629C89499&displaylang=enADE629C89499&displaylang=en Internet Information Services (IIS) 6.0 Manager for Windows XPInternet Information Services (IIS) 6.0 Manager for Windows XP http://www.microsoft.com/downloads/details.aspx?familyid=F9C1FB79-C903-4842-9F6C-http://www.microsoft.com/downloads/details.aspx?familyid=F9C1FB79-C903-4842-9F6C- 9DB93643FDB7&displaylang=en9DB93643FDB7&displaylang=en
  118. 118. TroubleshootingTroubleshooting Links dos SoftwaresLinks dos Softwares Windows Server 2003 Resource Kit ToolsWindows Server 2003 Resource Kit Tools http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7- 96ee-b18c4790cffd&displaylang=en96ee-b18c4790cffd&displaylang=en Windows Server 2003 Support Tools SP1Windows Server 2003 Support Tools SP1 http://www.microsoft.com/downloads/details.aspx?familyid=6EC50B78-8BE1-4E81-http://www.microsoft.com/downloads/details.aspx?familyid=6EC50B78-8BE1-4E81- B3BE-4E7AC4F0912D&displaylang=enB3BE-4E7AC4F0912D&displaylang=en DebugDiagDebugDiag http://beta.microsoft.comhttp://beta.microsoft.com IISStateIISState http://www.iisfaq.com/Default.aspx?tabid=2513http://www.iisfaq.com/Default.aspx?tabid=2513 IIS Crash/Hang Agent & IIS DumpIIS Crash/Hang Agent & IIS Dump http://www.microsoft.com/downloads/details.aspx?FamilyID=01c4f89d-cc68-42ba-http://www.microsoft.com/downloads/details.aspx?FamilyID=01c4f89d-cc68-42ba- 98d2-0c580437efcf&DisplayLang=en98d2-0c580437efcf&DisplayLang=en
  119. 119. Resumo das novidadesResumo das novidades IIS 6.0 foi completamente redesenhadoIIS 6.0 foi completamente redesenhado Quase 100% reescritoQuase 100% reescrito Application pools isola as aplicações.Application pools isola as aplicações. Application pools são altamente configuráveis.Application pools são altamente configuráveis. Web sites são associados aos Application Pools.Web sites são associados aos Application Pools. FTP suporta isolação de usuário.FTP suporta isolação de usuário. O formato do metabase agora é XML.O formato do metabase agora é XML. Você pode editar o metabase com o IIS rodando.Você pode editar o metabase com o IIS rodando.
  120. 120. Segurança x NavegabilidadeSegurança x Navegabilidade Ter um site SEGURO,Ter um site SEGURO, não significa ter um sitenão significa ter um site indisponível e deindisponível e de DIFÍCIL acesso.DIFÍCIL acesso. A segurança deve serA segurança deve ser TRANSPARENTE mas nãoTRANSPARENTE mas não pode interferir no acessopode interferir no acesso dos usuários autorizados.dos usuários autorizados.
  121. 121. Qual tecnologia usar?Qual tecnologia usar? .NET.NET ASPASP PHPPHP ColdFusionColdFusion JavaJava AJAXAJAX SQL ServerSQL Server OracleOracle MySQLMySQL Etc Etc EtcEtc Etc Etc
  122. 122. CUIDADO !!!!CUIDADO !!!! -Rode sua aplicação com o mínimo de privilégios. Nunca como ADM.Rode sua aplicação com o mínimo de privilégios. Nunca como ADM. -Valide tudo no ambiente servidor.Valide tudo no ambiente servidor. -Proteja strings de conexões ao Banco de dados.Proteja strings de conexões ao Banco de dados. -Utilize Stored Procedures. Não deixe que a página concatene instruçõesUtilize Stored Procedures. Não deixe que a página concatene instruções SQL com variáveis.SQL com variáveis. -Evite cookies e hiddens.Evite cookies e hiddens. -Tenha certeza de que informações não estão sendo geradas em outrasTenha certeza de que informações não estão sendo geradas em outras localidades e estão sendo passadas à sua aplicação.localidades e estão sendo passadas à sua aplicação. -Use criptografia em informações sigilosas.Use criptografia em informações sigilosas. -Escolha um bom servidor.Escolha um bom servidor. -Personalize páginas de erros – Erros também são falhas de segurança.Personalize páginas de erros – Erros também são falhas de segurança.
  123. 123. Vantagens dos Web ServicesVantagens dos Web Services DesenvolvimentoDesenvolvimento ConectadoConectado Interoperabilidade comInteroperabilidade com sistemas construídossistemas construídos em qualquer plataformaem qualquer plataforma ou linguagemou linguagem Sistemas ConectadosSistemas Conectados Integração com sistemas legados,Integração com sistemas legados, dentro e fora da empresadentro e fora da empresa Negócios ConectadosNegócios Conectados Agilidade na conexão a clientes, parceirosAgilidade na conexão a clientes, parceiros e funcionários, através de soluçõese funcionários, através de soluções construídas rapidamente e a baixosconstruídas rapidamente e a baixos custoscustos ExperiênciasExperiências ConectadasConectadas Informação a qualquerInformação a qualquer hora, em qualquer lugar,hora, em qualquer lugar, em qualquer dispositivoem qualquer dispositivo
  124. 124. Segurança Web ServicesSegurança Web Services A proposta Web Services Security (WS-Security) foi elaborada por Microsoft, IBM e VeriSign, com base em uma proposta anterior, ‘Signing SOAP Messages’ (assinatura de mensagens SOAP), submetida anteriormente ao W3C. A WS-Security aborda a segurança das mensagens SOAP, ao especificar um perfil para o uso da Assinatura XML (XML Signature) e da Criptografia XML (XML Encryption) que permite a garantia de integridade e confidencialidade para mensagens SOAP. Web Services com WS-Security:Web Services com WS-Security: Rede, Aplicativo e MensagemRede, Aplicativo e Mensagem Web Services Seguros: http://www.microsoft.com/brasil/security/guidance/topics/devsec/secmod10. mspx#E6D
  125. 125. IncreasedIncreased ReliabilityReliability QualityQuality Early & OftenEarly & Often PredictabilityPredictability & Visibility& Visibility Design forDesign for OperationsOperations ProjectProject ManagerManager SolutionSolution ArchitectArchitect DeveloperDeveloper TesterTester InfrastructureInfrastructure ArchitectArchitect Integração de projetosIntegração de projetos
  126. 126. Outros tipos de ameaçasOutros tipos de ameaças Espionagem:Espionagem: A calculadora ao lado esconde uma microfilmadora que armazena imagens em um cartão SD e é acionada por movimentos Espionagem:Espionagem: O microfone amplia em 50 decibéis o alvo das escutas, vem com fones de ouvido e funciona com pilhas AAA
  127. 127. Links e LivrosLinks e Livros Livro: Escrevendo Código SeguroLivro: Escrevendo Código Seguro MICHAEL HOWARD & DAVID LEBLANCMICHAEL HOWARD & DAVID LEBLANC Link: Microsoft - Centro de Orientações de SegurançaLink: Microsoft - Centro de Orientações de Segurança
  128. 128. ConclusãoConclusão A Segurança deve ser uma prática deA Segurança deve ser uma prática de aprendizado constante e deve seraprendizado constante e deve ser vista como uma importantevista como uma importante ferramenta no conjunto deferramenta no conjunto de elaboração de um projeto.elaboração de um projeto.

×