SlideShare una empresa de Scribd logo
1 de 16
Segurança de Aplicações WEB e
Open Source
10 dicas de segurança para desenvolvedores
AlexandreMarcolino
Segurança de Aplicações WEB e Open Source
AlexandreMarcolino
A segurança de um sistema inicia da primeira linha de código ?
NÃO !
10 dicas de segurança para desenvolvedores
Segurança de Aplicações WEB e Open Source
AlexandreMarcolino
10 dicas para orientar
você a
desenvolver/projetar
aplicações de forma
mais segura.
10 dicas de segurança para desenvolvedores
Segurança de Aplicações WEB e Open Source
AlexandreMarcolino
01 – O Arquiteto de Segurança
Profissional capacitado em segurança que irá determinar as diretrizes a serem
seguidas para garantir a segurança de sua aplicação, dados e servidores.
Desenvolvedores desenvolvem. Arquitetos de segurança não.
Arquitetos de segurança querem fechar tudo. Aplicações WEB são PÚBLICAS.
Deve ser estabelecido então um consenso sobre o nível de RISCO.
10 dicas de segurança para desenvolvedores
Segurança de Aplicações WEB e Open Source
AlexandreMarcolino
02 – Autenticação
A primeira coisa que uma aplicação precisa ter bem desenvolvida é o módulo
de autenticação de usuário.
Existem frameworks ótimos no mercado, pagos e não pagos, que cuidam
exclusivamente disso.
Opensource – OpenAM ( Antigo OpenSSO, descontinuado pela Oracle/Sun )
Exemplo-openAM.txt
10 dicas de segurança para desenvolvedores
Segurança de Aplicações WEB e Open Source
AlexandreMarcolino
03 – Gerenciamento de Sessão
Aplicações WEB são ASSÍNCRONAS, isto é, cada transação desconecta o
usuário do servidor ao fim da execução.
Isto delega à camada CLIENTE ( Insegura e não controlável ) a informação
sobre a autenticação, autorizações e estado de utilização da aplicação.
Não transfira DADOS. Coloque um ID na sessão e mantenha uma relação
IDxDADOS em uma TABELA!
Criptografe os DADOS e o ID com um hash ( segredo ) mutante, que é
alterado todo dia pelo menos sem intervenção humana.
WADI – Framework que gerencia o ID da sessão, para aplicações WEB
10 dicas de segurança para desenvolvedores
Segurança de Aplicações WEB e Open Source
AlexandreMarcolino
04 – Controle de Acesso
Controle de Acesso é a política de o que pode ser acessado por quem!
Não é o DESENVOLVEDOR que define isso.Não se dê ao trabalho de decidir
quem acessa o que.
Coloque o seu MENU de opções em uma tabela e associe grupos de acesso
aos MENUS. Seus programas ficarão mais limpos e fáceis de permissionar.
Não crie grupos demais. Não foque permissionamento em grupos ou
usuários, tenha os dois. Coloque o usuário como precedente.
Mantenha em LOG todas as alterações de permissionamento, registrando
quem deu o ACESSO a QUEM! Isso pode salvar seu emprego.
Mantenha os LOGS de ACESSO a salvo. Isso pode salvar seu emprego.
10 dicas de segurança para desenvolvedores
Segurança de Aplicações WEB e Open Source
AlexandreMarcolino
05 – Validação de dados de Entrada
Basta ter tempo e imaginação ( conhecimento técnico é obrigação )
para descobrir uma forma de injetar código em um formulário WEB.
Campos do tipo ALFANUMÉRICOS são os mais vulneráveis.
Crie validações em duas camadas:
a) Com javascript, antes de submeter a página já elimine os
&$%| e outros caracteres maliciosos, usados para injeção de código.
b) Antes de sair submetendo ao banco, busque na string
palavras chave. Afinal ninguém se chama DROP SYSTEM CASCADE;Framework utilizando Struts 1.2
struts-config.xml
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/technology/WEB-INF/
validator-rules.xml, /WEB-INF/validation.xml"/>
</plug-in>
Código em Java do plugin
package com.pcs.necronomicon
import org.apache.struts.validator.ValidatorForm;
public class LogonForm extends ValidatorForm {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
Publicação do objeto (struts-config.xml de novo )
<form-beans>
<form-bean name="logonForm"
type=" com.pcs.necronomicon.LogonForm"/>
</form-beans>
Arquivo validation.xml
<form-validation>
<formset>
<form name="logonForm">
<field property="username"
depends="required">
<arg0 key="prompt.username"/>
</field>
</form>
</formset>
</form-validation>
CUIDADO COM TUDO NO XML! Lembre-se, XML é case sensitive!
10 dicas de segurança para desenvolvedores
Segurança de Aplicações WEB e Open Source
AlexandreMarcolino
06 – Codifique sua saída
Uma saída codificada impede que um atacante saiba como injetar
código ou colher dados de sua aplicação.
Exemplo de errado:
https://www.google.com/a/webviva.com.br/ServiceLogin?service=mail&passive=true&rm=false&contin
ue=http://mail.google.com/a/webviva.com.br/&ltmpl=googlemail
Exemplo certo:
https://painel.host.uol.com.br/painel.php?fn=authUser&gr=35&a=8c57776b63174afa529a253814e1bd
e72e316fab|d4de5c0447858bb08ee0760043a6abb8589a8a39&x=XOmoVd124LaIf03i2sgD|d4de5c044
7858bb08ee0760043a6abb8589a8a39&z=d4de5c0447858bb08ee0760043a6abb8589a8a39&t=0&pane
lOpen=inicio
10 dicas de segurança para desenvolvedores
Segurança de Aplicações WEB e Open Source
AlexandreMarcolino
07 – Criptografia ( SSL, TLS, etc... ) e certificados digitais
Algo tão simples e tão no dia a dia que a galera simplesmente deixa
de usar por displiscência, igual a preservativos!
OpenSSL é seu amigo!
10 dicas de segurança para desenvolvedores
Segurança de Aplicações WEB e Open Source
AlexandreMarcolino
08 – LOG e Tratamento de Erros
Armazenar os LOGS de forma simples, de fácil acesso e compreensão,
preservados e gerenciados adequadamente.
SYSLOG-NG
Não cuspa o erro no LOG só porque você é capaz de saber o que ele
significa. Crie uma transação única que trata todos os erros e documenta
eles adequadamente nos LOGS. Isso servirá como uma evidência real.
Guarde junto com o seu erro TUDO QUE PUDER sobre o que o usuário
estava transacionando. E sincronize isso com o registro da AUDITORIA da
aplicação. Você vai me agradecer um dia.
10 dicas de segurança para desenvolvedores
Segurança de Aplicações WEB e Open Source
AlexandreMarcolino
08 – LOG e Tratamento de Erros
Log MUITO RUIM:
[Thread-4986] 26-04-2012 11:56:36.736 > ERROR (?:?) - Ocorreu erro no tratamento ou envio do
socket do BANCO XXXX br.com.sistema.cartao.exception.IFException: Ocorreu erro ao efetivar o
bloqueio do cartão PL - CPF 71304421734 at br.com.
sistema.cartao.business.IFBusiness.efetivaBloqueioCartaoPL(IFBusiness.java:664)
at br.com. sistema.cartao.if.socket.ComunicadorIF.run(ComunicadorIF.java(Compiled Code))
at java.lang.Thread.run(Thread.java(Compiled Code))
Caused by: br.com. sistema.cartao.if.exception.IFException: O cliente 71304421734 não será
desbloqueado porque não está aguardando desbloqueio. At br.com.
sistema.cartao.if.business.IFBusiness.efetivaBloqueioCartaoPL(IFBusiness.java:631)
... 2 more
10 dicas de segurança para desenvolvedores
Segurança de Aplicações WEB e Open Source
AlexandreMarcolino
08 – LOG e Tratamento de Erros
Log MELHORZINHO:
2012-04-26 13:09:27,452 ERROR br.com.neurotech.shr.util.NUtils - [Frontend] [erro] => StackTrace da Exceção: [26/04/2012 13:09:27]
........................................................
- Id da Exceção: #133545656744625137141665
- Nome da Classe: br.com.neurotech.excecoes.ExcecaoSistema
- Servidor: mari111 - 128.1.30.49
- CPF do Usuário: 1607680475
- Nome do Usuário: MARIA LUCIANA OLIVEIRA DE SOUSA
- Login do Usuário: L506_MARIAL
- Filial do Usuário: 506
- Debug: br.com.neurotech.cadastro.sql.DAOGenericBD | pSql = SELECT CCM_DOCUMENTO.DOC_COD
| pExcecao = java.sql.SQLSyntaxErrorException: ORA-01722: invalid number
[ORA-01722: invalid number
]
- Data Hora: 26/04/2012 13:09:27
- Stack Trace:
java.sql.SQLSyntaxErrorException: ORA-01722: invalid number
10 dicas de segurança para desenvolvedores
Segurança de Aplicações WEB e Open Source
AlexandreMarcolino
09 – Proteção dos Dados
Backup
Não adianta a aplicação ser segura e as fitas ficarem na mesa do operador.
Não adianta a aplicação ser segura e o backup não existir.
SGBD de VERDADE – PostgreSQL, MySQL, Oracle...DB2.
Se a aplicação é aderente às melhores práticas de segurança, a solução de
banco tem que acompanhar isso. O ideal é que o usuário que loga no sistema
seja o que existe no banco e ambos tenham seus repositórios de usuários
aderentes a solução de SSO escolhida.
10 dicas de segurança para desenvolvedores
Segurança de Aplicações WEB e Open Source
AlexandreMarcolino
10 – Proteção das Comunicações
Redes de dados controladas e certificadas.
Se você pretende usar WIFI, Criptografia.
Internet, Firewall, IDS, Proxy Reverso para um filtro inicial de conexões
indesejadas e outros ativos de segurança devem fazer parte do aparato de que
sustenta as comunicações.
Na rede INTERNA, na comunicação entre a Aplicação e o SGBD, criptografa.
Não é exagero. Cada elo da corrente é importante.
10 dicas de segurança para desenvolvedores
Sim, eu quero saber mais!
facebook.com/AlexandreMarcolino
twitter.com/ajmarcol
www.owasp.org
AlexandreMarcolino

Más contenido relacionado

La actualidad más candente

As 10 maiores falhas de segurança e como executá-las
As 10 maiores falhas de segurança e como executá-lasAs 10 maiores falhas de segurança e como executá-las
As 10 maiores falhas de segurança e como executá-lasWalter Dias
 
Desenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPDesenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPFlavio Souza
 
Desenvolvimento de software seguro
Desenvolvimento de software seguroDesenvolvimento de software seguro
Desenvolvimento de software seguroCharles Fortes
 
Desenvolvimento Web - Palestra Coding Night #3 - Microsoft
Desenvolvimento Web - Palestra Coding Night #3 - MicrosoftDesenvolvimento Web - Palestra Coding Night #3 - Microsoft
Desenvolvimento Web - Palestra Coding Night #3 - MicrosoftRubens Guimarães - MTAC MVP
 
Palestra - Darkmira Tour PHP 2016 - A ilusão das referências sobre desenvolv...
Palestra - Darkmira Tour PHP 2016  - A ilusão das referências sobre desenvolv...Palestra - Darkmira Tour PHP 2016  - A ilusão das referências sobre desenvolv...
Palestra - Darkmira Tour PHP 2016 - A ilusão das referências sobre desenvolv...Thiago Dieb
 
Politicas de seguranca
Politicas de segurancaPoliticas de seguranca
Politicas de segurancaJoão Dias
 

La actualidad más candente (8)

Testes de Segurança de Software (tech-ed 2008)
Testes de Segurança de Software (tech-ed 2008)Testes de Segurança de Software (tech-ed 2008)
Testes de Segurança de Software (tech-ed 2008)
 
As 10 maiores falhas de segurança e como executá-las
As 10 maiores falhas de segurança e como executá-lasAs 10 maiores falhas de segurança e como executá-las
As 10 maiores falhas de segurança e como executá-las
 
Desenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPDesenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHP
 
Desenvolvimento de software seguro
Desenvolvimento de software seguroDesenvolvimento de software seguro
Desenvolvimento de software seguro
 
Desenvolvimento Web - Palestra Coding Night #3 - Microsoft
Desenvolvimento Web - Palestra Coding Night #3 - MicrosoftDesenvolvimento Web - Palestra Coding Night #3 - Microsoft
Desenvolvimento Web - Palestra Coding Night #3 - Microsoft
 
Palestra - Darkmira Tour PHP 2016 - A ilusão das referências sobre desenvolv...
Palestra - Darkmira Tour PHP 2016  - A ilusão das referências sobre desenvolv...Palestra - Darkmira Tour PHP 2016  - A ilusão das referências sobre desenvolv...
Palestra - Darkmira Tour PHP 2016 - A ilusão das referências sobre desenvolv...
 
OWASP - Ferramentas
OWASP - FerramentasOWASP - Ferramentas
OWASP - Ferramentas
 
Politicas de seguranca
Politicas de segurancaPoliticas de seguranca
Politicas de seguranca
 

Destacado

Evolution of cladding vieo
Evolution of cladding vieoEvolution of cladding vieo
Evolution of cladding vieoPaul Phillips
 
Busch, britany, mikaeli bell, ethan helmers
Busch, britany, mikaeli bell, ethan helmersBusch, britany, mikaeli bell, ethan helmers
Busch, britany, mikaeli bell, ethan helmersnitchals
 
Curso de comprensión lectora en inglés grupo 4
Curso de comprensión lectora en inglés grupo 4Curso de comprensión lectora en inglés grupo 4
Curso de comprensión lectora en inglés grupo 4Alicia Garcia
 
Monikaytto raitio-2010
Monikaytto raitio-2010Monikaytto raitio-2010
Monikaytto raitio-2010stkkettu
 
Sydney town scenes
Sydney town scenesSydney town scenes
Sydney town scenesIvor Jones
 
IxDA QGov Single Website Experience
IxDA QGov Single Website ExperienceIxDA QGov Single Website Experience
IxDA QGov Single Website ExperienceBen Melbourne
 
How To Keep Your Business: Focus On Your Customer
How To Keep Your Business: Focus On Your CustomerHow To Keep Your Business: Focus On Your Customer
How To Keep Your Business: Focus On Your CustomerMasterBizCoach
 
Volanto inizio corsi CILS 2011
Volanto inizio corsi CILS 2011Volanto inizio corsi CILS 2011
Volanto inizio corsi CILS 2011IIS-Frisi-Milano
 
Volante Winalite - Toallas Sanitarias Terapeuticas ANION
Volante Winalite - Toallas Sanitarias Terapeuticas ANIONVolante Winalite - Toallas Sanitarias Terapeuticas ANION
Volante Winalite - Toallas Sanitarias Terapeuticas ANIONAnecto Mogollon
 
How to Know You're going to Heaven
How to Know You're going to HeavenHow to Know You're going to Heaven
How to Know You're going to HeavenCrystal Husker
 
Nutrigenética clínica centro granada
Nutrigenética clínica centro granadaNutrigenética clínica centro granada
Nutrigenética clínica centro granadaClínica Centro
 

Destacado (20)

Evolution of cladding vieo
Evolution of cladding vieoEvolution of cladding vieo
Evolution of cladding vieo
 
Busch, britany, mikaeli bell, ethan helmers
Busch, britany, mikaeli bell, ethan helmersBusch, britany, mikaeli bell, ethan helmers
Busch, britany, mikaeli bell, ethan helmers
 
Volantino 18 anni
Volantino 18 anniVolantino 18 anni
Volantino 18 anni
 
Curso de comprensión lectora en inglés grupo 4
Curso de comprensión lectora en inglés grupo 4Curso de comprensión lectora en inglés grupo 4
Curso de comprensión lectora en inglés grupo 4
 
Monikaytto raitio-2010
Monikaytto raitio-2010Monikaytto raitio-2010
Monikaytto raitio-2010
 
Sydney town scenes
Sydney town scenesSydney town scenes
Sydney town scenes
 
IxDA QGov Single Website Experience
IxDA QGov Single Website ExperienceIxDA QGov Single Website Experience
IxDA QGov Single Website Experience
 
RISE Awards Banquet
RISE Awards Banquet RISE Awards Banquet
RISE Awards Banquet
 
Swp 402 Pdf
Swp 402 PdfSwp 402 Pdf
Swp 402 Pdf
 
Jun Hp
Jun HpJun Hp
Jun Hp
 
How To Keep Your Business: Focus On Your Customer
How To Keep Your Business: Focus On Your CustomerHow To Keep Your Business: Focus On Your Customer
How To Keep Your Business: Focus On Your Customer
 
Volanto inizio corsi CILS 2011
Volanto inizio corsi CILS 2011Volanto inizio corsi CILS 2011
Volanto inizio corsi CILS 2011
 
Volante Winalite - Toallas Sanitarias Terapeuticas ANION
Volante Winalite - Toallas Sanitarias Terapeuticas ANIONVolante Winalite - Toallas Sanitarias Terapeuticas ANION
Volante Winalite - Toallas Sanitarias Terapeuticas ANION
 
Rio Omo, Etiópia!
Rio Omo, Etiópia!Rio Omo, Etiópia!
Rio Omo, Etiópia!
 
IxDa Barcelona Launch
IxDa Barcelona LaunchIxDa Barcelona Launch
IxDa Barcelona Launch
 
Buscadores2
Buscadores2Buscadores2
Buscadores2
 
Utah Trendlines for Nov/Dec 2008
Utah Trendlines for Nov/Dec 2008Utah Trendlines for Nov/Dec 2008
Utah Trendlines for Nov/Dec 2008
 
Trabajo.bl
Trabajo.blTrabajo.bl
Trabajo.bl
 
How to Know You're going to Heaven
How to Know You're going to HeavenHow to Know You're going to Heaven
How to Know You're going to Heaven
 
Nutrigenética clínica centro granada
Nutrigenética clínica centro granadaNutrigenética clínica centro granada
Nutrigenética clínica centro granada
 

Similar a Segurança de Aplicações WEB e OpenSource

Aplicações Web ‐ Seu site está seguro?
Aplicações Web ‐ Seu site está seguro?Aplicações Web ‐ Seu site está seguro?
Aplicações Web ‐ Seu site está seguro?Alex Hübner
 
Palestra criando aplicações seguras com php (2)
Palestra  criando aplicações seguras com php (2)Palestra  criando aplicações seguras com php (2)
Palestra criando aplicações seguras com php (2)Leandro Lugaresi
 
Explorando 5 falhas graves de segurança que os programadores sempre cometem
Explorando 5 falhas graves de segurança que os programadores sempre cometemExplorando 5 falhas graves de segurança que os programadores sempre cometem
Explorando 5 falhas graves de segurança que os programadores sempre cometemAlcyon Ferreira de Souza Junior, MSc
 
Explorando 5 falhas graves de segurança que todos programadores cometem
Explorando 5 falhas graves de segurança que todos programadores cometem Explorando 5 falhas graves de segurança que todos programadores cometem
Explorando 5 falhas graves de segurança que todos programadores cometem Alcyon Ferreira de Souza Junior, MSc
 
Segurança em Aplicativos Web
Segurança em Aplicativos WebSegurança em Aplicativos Web
Segurança em Aplicativos WebSergio Henrique
 
Como se tornar um especialista em Desenvolvimento Seguro de Software
Como se tornar um especialista em Desenvolvimento Seguro de SoftwareComo se tornar um especialista em Desenvolvimento Seguro de Software
Como se tornar um especialista em Desenvolvimento Seguro de SoftwareAlcyon Ferreira de Souza Junior, MSc
 
Global Azure Bootcamp - Recursos de Segurança para Aplicações no Azure
Global Azure Bootcamp - Recursos de Segurança para Aplicações no AzureGlobal Azure Bootcamp - Recursos de Segurança para Aplicações no Azure
Global Azure Bootcamp - Recursos de Segurança para Aplicações no AzureRubens Guimarães - MTAC MVP
 
Segurança em aplicações web: pequenas ideias, grandes resultados
Segurança em aplicações web: pequenas ideias, grandes resultadosSegurança em aplicações web: pequenas ideias, grandes resultados
Segurança em aplicações web: pequenas ideias, grandes resultadosAlex Camargo
 
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...tdc-globalcode
 
Aula 03 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 03 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...Aula 03 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 03 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...Alcyon Ferreira de Souza Junior, MSc
 
Construindo um ambiente resiliente para Ransomware com AWS
Construindo um ambiente resiliente para Ransomware com AWSConstruindo um ambiente resiliente para Ransomware com AWS
Construindo um ambiente resiliente para Ransomware com AWSAmazon Web Services LATAM
 
Sunlit technologies portfolio produtos &amp; serviços agosto2016
Sunlit technologies   portfolio produtos &amp; serviços  agosto2016Sunlit technologies   portfolio produtos &amp; serviços  agosto2016
Sunlit technologies portfolio produtos &amp; serviços agosto2016Antonio Carlos Scola - MSc
 
WEB_Report_Penetration_Test_Verifact_Gray_Box_Publicacao.pdf
WEB_Report_Penetration_Test_Verifact_Gray_Box_Publicacao.pdfWEB_Report_Penetration_Test_Verifact_Gray_Box_Publicacao.pdf
WEB_Report_Penetration_Test_Verifact_Gray_Box_Publicacao.pdfFranciscoZunza1
 

Similar a Segurança de Aplicações WEB e OpenSource (20)

Aplicações Web ‐ Seu site está seguro?
Aplicações Web ‐ Seu site está seguro?Aplicações Web ‐ Seu site está seguro?
Aplicações Web ‐ Seu site está seguro?
 
Segurança na web
Segurança na webSegurança na web
Segurança na web
 
Pentest com Kali Linux - LatinoWare 2015
Pentest com Kali Linux  - LatinoWare 2015Pentest com Kali Linux  - LatinoWare 2015
Pentest com Kali Linux - LatinoWare 2015
 
Palestra criando aplicações seguras com php (2)
Palestra  criando aplicações seguras com php (2)Palestra  criando aplicações seguras com php (2)
Palestra criando aplicações seguras com php (2)
 
Explorando 5 falhas graves de segurança que os programadores sempre cometem
Explorando 5 falhas graves de segurança que os programadores sempre cometemExplorando 5 falhas graves de segurança que os programadores sempre cometem
Explorando 5 falhas graves de segurança que os programadores sempre cometem
 
Explorando 5 falhas graves de segurança que todos programadores cometem
Explorando 5 falhas graves de segurança que todos programadores cometem Explorando 5 falhas graves de segurança que todos programadores cometem
Explorando 5 falhas graves de segurança que todos programadores cometem
 
Webgoat Project - Apresentação
Webgoat Project - ApresentaçãoWebgoat Project - Apresentação
Webgoat Project - Apresentação
 
Segurança em Aplicativos Web
Segurança em Aplicativos WebSegurança em Aplicativos Web
Segurança em Aplicativos Web
 
Como se tornar um especialista em Desenvolvimento Seguro de Software
Como se tornar um especialista em Desenvolvimento Seguro de SoftwareComo se tornar um especialista em Desenvolvimento Seguro de Software
Como se tornar um especialista em Desenvolvimento Seguro de Software
 
Global Azure Bootcamp - Recursos de Segurança para Aplicações no Azure
Global Azure Bootcamp - Recursos de Segurança para Aplicações no AzureGlobal Azure Bootcamp - Recursos de Segurança para Aplicações no Azure
Global Azure Bootcamp - Recursos de Segurança para Aplicações no Azure
 
PenTest com Kali linux - VI Engitec
PenTest com Kali linux - VI EngitecPenTest com Kali linux - VI Engitec
PenTest com Kali linux - VI Engitec
 
Antar ferreira
Antar ferreiraAntar ferreira
Antar ferreira
 
Segurança em aplicações web: pequenas ideias, grandes resultados
Segurança em aplicações web: pequenas ideias, grandes resultadosSegurança em aplicações web: pequenas ideias, grandes resultados
Segurança em aplicações web: pequenas ideias, grandes resultados
 
Java security
Java securityJava security
Java security
 
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...
 
Aula 03 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 03 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...Aula 03 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 03 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
 
Construindo um ambiente resiliente para Ransomware com AWS
Construindo um ambiente resiliente para Ransomware com AWSConstruindo um ambiente resiliente para Ransomware com AWS
Construindo um ambiente resiliente para Ransomware com AWS
 
Lm 71 64_67_04_tut_openaudit
Lm 71 64_67_04_tut_openauditLm 71 64_67_04_tut_openaudit
Lm 71 64_67_04_tut_openaudit
 
Sunlit technologies portfolio produtos &amp; serviços agosto2016
Sunlit technologies   portfolio produtos &amp; serviços  agosto2016Sunlit technologies   portfolio produtos &amp; serviços  agosto2016
Sunlit technologies portfolio produtos &amp; serviços agosto2016
 
WEB_Report_Penetration_Test_Verifact_Gray_Box_Publicacao.pdf
WEB_Report_Penetration_Test_Verifact_Gray_Box_Publicacao.pdfWEB_Report_Penetration_Test_Verifact_Gray_Box_Publicacao.pdf
WEB_Report_Penetration_Test_Verifact_Gray_Box_Publicacao.pdf
 

Más de Alexandre Jesus Marcolino (12)

Pai nosso lnvertido
Pai nosso lnvertidoPai nosso lnvertido
Pai nosso lnvertido
 
Mobile social hubs
Mobile social hubsMobile social hubs
Mobile social hubs
 
Wp100963 jython scripting with wsadmin tutorial
Wp100963   jython scripting with wsadmin tutorialWp100963   jython scripting with wsadmin tutorial
Wp100963 jython scripting with wsadmin tutorial
 
Impressionante cirurgia Uterina
Impressionante  cirurgia UterinaImpressionante  cirurgia Uterina
Impressionante cirurgia Uterina
 
Bendiga a Deus
Bendiga a DeusBendiga a Deus
Bendiga a Deus
 
Lei Maria da Penha
Lei Maria da PenhaLei Maria da Penha
Lei Maria da Penha
 
Resumo livro "Virando a própria mesa" - Ricardo Semler
Resumo livro "Virando a própria mesa" - Ricardo SemlerResumo livro "Virando a própria mesa" - Ricardo Semler
Resumo livro "Virando a própria mesa" - Ricardo Semler
 
Acalme meu passo Senhor
Acalme meu passo SenhorAcalme meu passo Senhor
Acalme meu passo Senhor
 
A piscina e a cruz
A piscina e a cruzA piscina e a cruz
A piscina e a cruz
 
Mito da caverna
Mito da cavernaMito da caverna
Mito da caverna
 
A era das comunicaçoes
A era das comunicaçoesA era das comunicaçoes
A era das comunicaçoes
 
Charges 20.04.12 jg
Charges   20.04.12 jgCharges   20.04.12 jg
Charges 20.04.12 jg
 

Segurança de Aplicações WEB e OpenSource

  • 1. Segurança de Aplicações WEB e Open Source 10 dicas de segurança para desenvolvedores AlexandreMarcolino
  • 2. Segurança de Aplicações WEB e Open Source AlexandreMarcolino A segurança de um sistema inicia da primeira linha de código ? NÃO ! 10 dicas de segurança para desenvolvedores
  • 3. Segurança de Aplicações WEB e Open Source AlexandreMarcolino 10 dicas para orientar você a desenvolver/projetar aplicações de forma mais segura. 10 dicas de segurança para desenvolvedores
  • 4. Segurança de Aplicações WEB e Open Source AlexandreMarcolino 01 – O Arquiteto de Segurança Profissional capacitado em segurança que irá determinar as diretrizes a serem seguidas para garantir a segurança de sua aplicação, dados e servidores. Desenvolvedores desenvolvem. Arquitetos de segurança não. Arquitetos de segurança querem fechar tudo. Aplicações WEB são PÚBLICAS. Deve ser estabelecido então um consenso sobre o nível de RISCO. 10 dicas de segurança para desenvolvedores
  • 5. Segurança de Aplicações WEB e Open Source AlexandreMarcolino 02 – Autenticação A primeira coisa que uma aplicação precisa ter bem desenvolvida é o módulo de autenticação de usuário. Existem frameworks ótimos no mercado, pagos e não pagos, que cuidam exclusivamente disso. Opensource – OpenAM ( Antigo OpenSSO, descontinuado pela Oracle/Sun ) Exemplo-openAM.txt 10 dicas de segurança para desenvolvedores
  • 6. Segurança de Aplicações WEB e Open Source AlexandreMarcolino 03 – Gerenciamento de Sessão Aplicações WEB são ASSÍNCRONAS, isto é, cada transação desconecta o usuário do servidor ao fim da execução. Isto delega à camada CLIENTE ( Insegura e não controlável ) a informação sobre a autenticação, autorizações e estado de utilização da aplicação. Não transfira DADOS. Coloque um ID na sessão e mantenha uma relação IDxDADOS em uma TABELA! Criptografe os DADOS e o ID com um hash ( segredo ) mutante, que é alterado todo dia pelo menos sem intervenção humana. WADI – Framework que gerencia o ID da sessão, para aplicações WEB 10 dicas de segurança para desenvolvedores
  • 7. Segurança de Aplicações WEB e Open Source AlexandreMarcolino 04 – Controle de Acesso Controle de Acesso é a política de o que pode ser acessado por quem! Não é o DESENVOLVEDOR que define isso.Não se dê ao trabalho de decidir quem acessa o que. Coloque o seu MENU de opções em uma tabela e associe grupos de acesso aos MENUS. Seus programas ficarão mais limpos e fáceis de permissionar. Não crie grupos demais. Não foque permissionamento em grupos ou usuários, tenha os dois. Coloque o usuário como precedente. Mantenha em LOG todas as alterações de permissionamento, registrando quem deu o ACESSO a QUEM! Isso pode salvar seu emprego. Mantenha os LOGS de ACESSO a salvo. Isso pode salvar seu emprego. 10 dicas de segurança para desenvolvedores
  • 8. Segurança de Aplicações WEB e Open Source AlexandreMarcolino 05 – Validação de dados de Entrada Basta ter tempo e imaginação ( conhecimento técnico é obrigação ) para descobrir uma forma de injetar código em um formulário WEB. Campos do tipo ALFANUMÉRICOS são os mais vulneráveis. Crie validações em duas camadas: a) Com javascript, antes de submeter a página já elimine os &$%| e outros caracteres maliciosos, usados para injeção de código. b) Antes de sair submetendo ao banco, busque na string palavras chave. Afinal ninguém se chama DROP SYSTEM CASCADE;Framework utilizando Struts 1.2 struts-config.xml <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/technology/WEB-INF/ validator-rules.xml, /WEB-INF/validation.xml"/> </plug-in> Código em Java do plugin package com.pcs.necronomicon import org.apache.struts.validator.ValidatorForm; public class LogonForm extends ValidatorForm { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } Publicação do objeto (struts-config.xml de novo ) <form-beans> <form-bean name="logonForm" type=" com.pcs.necronomicon.LogonForm"/> </form-beans> Arquivo validation.xml <form-validation> <formset> <form name="logonForm"> <field property="username" depends="required"> <arg0 key="prompt.username"/> </field> </form> </formset> </form-validation> CUIDADO COM TUDO NO XML! Lembre-se, XML é case sensitive! 10 dicas de segurança para desenvolvedores
  • 9. Segurança de Aplicações WEB e Open Source AlexandreMarcolino 06 – Codifique sua saída Uma saída codificada impede que um atacante saiba como injetar código ou colher dados de sua aplicação. Exemplo de errado: https://www.google.com/a/webviva.com.br/ServiceLogin?service=mail&passive=true&rm=false&contin ue=http://mail.google.com/a/webviva.com.br/&ltmpl=googlemail Exemplo certo: https://painel.host.uol.com.br/painel.php?fn=authUser&gr=35&a=8c57776b63174afa529a253814e1bd e72e316fab|d4de5c0447858bb08ee0760043a6abb8589a8a39&x=XOmoVd124LaIf03i2sgD|d4de5c044 7858bb08ee0760043a6abb8589a8a39&z=d4de5c0447858bb08ee0760043a6abb8589a8a39&t=0&pane lOpen=inicio 10 dicas de segurança para desenvolvedores
  • 10. Segurança de Aplicações WEB e Open Source AlexandreMarcolino 07 – Criptografia ( SSL, TLS, etc... ) e certificados digitais Algo tão simples e tão no dia a dia que a galera simplesmente deixa de usar por displiscência, igual a preservativos! OpenSSL é seu amigo! 10 dicas de segurança para desenvolvedores
  • 11. Segurança de Aplicações WEB e Open Source AlexandreMarcolino 08 – LOG e Tratamento de Erros Armazenar os LOGS de forma simples, de fácil acesso e compreensão, preservados e gerenciados adequadamente. SYSLOG-NG Não cuspa o erro no LOG só porque você é capaz de saber o que ele significa. Crie uma transação única que trata todos os erros e documenta eles adequadamente nos LOGS. Isso servirá como uma evidência real. Guarde junto com o seu erro TUDO QUE PUDER sobre o que o usuário estava transacionando. E sincronize isso com o registro da AUDITORIA da aplicação. Você vai me agradecer um dia. 10 dicas de segurança para desenvolvedores
  • 12. Segurança de Aplicações WEB e Open Source AlexandreMarcolino 08 – LOG e Tratamento de Erros Log MUITO RUIM: [Thread-4986] 26-04-2012 11:56:36.736 > ERROR (?:?) - Ocorreu erro no tratamento ou envio do socket do BANCO XXXX br.com.sistema.cartao.exception.IFException: Ocorreu erro ao efetivar o bloqueio do cartão PL - CPF 71304421734 at br.com. sistema.cartao.business.IFBusiness.efetivaBloqueioCartaoPL(IFBusiness.java:664) at br.com. sistema.cartao.if.socket.ComunicadorIF.run(ComunicadorIF.java(Compiled Code)) at java.lang.Thread.run(Thread.java(Compiled Code)) Caused by: br.com. sistema.cartao.if.exception.IFException: O cliente 71304421734 não será desbloqueado porque não está aguardando desbloqueio. At br.com. sistema.cartao.if.business.IFBusiness.efetivaBloqueioCartaoPL(IFBusiness.java:631) ... 2 more 10 dicas de segurança para desenvolvedores
  • 13. Segurança de Aplicações WEB e Open Source AlexandreMarcolino 08 – LOG e Tratamento de Erros Log MELHORZINHO: 2012-04-26 13:09:27,452 ERROR br.com.neurotech.shr.util.NUtils - [Frontend] [erro] => StackTrace da Exceção: [26/04/2012 13:09:27] ........................................................ - Id da Exceção: #133545656744625137141665 - Nome da Classe: br.com.neurotech.excecoes.ExcecaoSistema - Servidor: mari111 - 128.1.30.49 - CPF do Usuário: 1607680475 - Nome do Usuário: MARIA LUCIANA OLIVEIRA DE SOUSA - Login do Usuário: L506_MARIAL - Filial do Usuário: 506 - Debug: br.com.neurotech.cadastro.sql.DAOGenericBD | pSql = SELECT CCM_DOCUMENTO.DOC_COD | pExcecao = java.sql.SQLSyntaxErrorException: ORA-01722: invalid number [ORA-01722: invalid number ] - Data Hora: 26/04/2012 13:09:27 - Stack Trace: java.sql.SQLSyntaxErrorException: ORA-01722: invalid number 10 dicas de segurança para desenvolvedores
  • 14. Segurança de Aplicações WEB e Open Source AlexandreMarcolino 09 – Proteção dos Dados Backup Não adianta a aplicação ser segura e as fitas ficarem na mesa do operador. Não adianta a aplicação ser segura e o backup não existir. SGBD de VERDADE – PostgreSQL, MySQL, Oracle...DB2. Se a aplicação é aderente às melhores práticas de segurança, a solução de banco tem que acompanhar isso. O ideal é que o usuário que loga no sistema seja o que existe no banco e ambos tenham seus repositórios de usuários aderentes a solução de SSO escolhida. 10 dicas de segurança para desenvolvedores
  • 15. Segurança de Aplicações WEB e Open Source AlexandreMarcolino 10 – Proteção das Comunicações Redes de dados controladas e certificadas. Se você pretende usar WIFI, Criptografia. Internet, Firewall, IDS, Proxy Reverso para um filtro inicial de conexões indesejadas e outros ativos de segurança devem fazer parte do aparato de que sustenta as comunicações. Na rede INTERNA, na comunicação entre a Aplicação e o SGBD, criptografa. Não é exagero. Cada elo da corrente é importante. 10 dicas de segurança para desenvolvedores
  • 16. Sim, eu quero saber mais! facebook.com/AlexandreMarcolino twitter.com/ajmarcol www.owasp.org AlexandreMarcolino