Your SlideShare is downloading. ×
Segurança de Aplicações WEB e OpenSource
Segurança de Aplicações WEB e OpenSource
Segurança de Aplicações WEB e OpenSource
Segurança de Aplicações WEB e OpenSource
Segurança de Aplicações WEB e OpenSource
Segurança de Aplicações WEB e OpenSource
Segurança de Aplicações WEB e OpenSource
Segurança de Aplicações WEB e OpenSource
Segurança de Aplicações WEB e OpenSource
Segurança de Aplicações WEB e OpenSource
Segurança de Aplicações WEB e OpenSource
Segurança de Aplicações WEB e OpenSource
Segurança de Aplicações WEB e OpenSource
Segurança de Aplicações WEB e OpenSource
Segurança de Aplicações WEB e OpenSource
Segurança de Aplicações WEB e OpenSource
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Segurança de Aplicações WEB e OpenSource

392

Published on

Material da palestra de OWASP aplicada em 2012 no Flisol Campinas.

Material da palestra de OWASP aplicada em 2012 no Flisol Campinas.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
392
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Segurança de Aplicações WEB eOpen Source10 dicas de segurança para desenvolvedoresAlexandreMarcolino
  • 2. Segurança de Aplicações WEB e Open SourceAlexandreMarcolinoA 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 SourceAlexandreMarcolino10 dicas para orientarvocê adesenvolver/projetaraplicações de formamais segura.10 dicas de segurança para desenvolvedores
  • 4. Segurança de Aplicações WEB e Open SourceAlexandreMarcolino01 – O Arquiteto de SegurançaProfissional capacitado em segurança que irá determinar as diretrizes a seremseguidas 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 SourceAlexandreMarcolino02 – AutenticaçãoA primeira coisa que uma aplicação precisa ter bem desenvolvida é o módulode autenticação de usuário.Existem frameworks ótimos no mercado, pagos e não pagos, que cuidamexclusivamente disso.Opensource – OpenAM ( Antigo OpenSSO, descontinuado pela Oracle/Sun )Exemplo-openAM.txt10 dicas de segurança para desenvolvedores
  • 6. Segurança de Aplicações WEB e Open SourceAlexandreMarcolino03 – Gerenciamento de SessãoAplicações WEB são ASSÍNCRONAS, isto é, cada transação desconecta ousuário do servidor ao fim da execução.Isto delega à camada CLIENTE ( Insegura e não controlável ) a informaçãosobre 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çãoIDxDADOS 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 WEB10 dicas de segurança para desenvolvedores
  • 7. Segurança de Aplicações WEB e Open SourceAlexandreMarcolino04 – Controle de AcessoControle 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 decidirquem acessa o que.Coloque o seu MENU de opções em uma tabela e associe grupos de acessoaos MENUS. Seus programas ficarão mais limpos e fáceis de permissionar.Não crie grupos demais. Não foque permissionamento em grupos ouusuários, tenha os dois. Coloque o usuário como precedente.Mantenha em LOG todas as alterações de permissionamento, registrandoquem 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 SourceAlexandreMarcolino05 – Validação de dados de EntradaBasta 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 stringpalavras chave. Afinal ninguém se chama DROP SYSTEM CASCADE;Framework utilizando Struts 1.2struts-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 pluginpackage com.pcs.necronomiconimport 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 SourceAlexandreMarcolino06 – Codifique sua saídaUma saída codificada impede que um atacante saiba como injetarcó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&continue=http://mail.google.com/a/webviva.com.br/&ltmpl=googlemailExemplo certo:https://painel.host.uol.com.br/painel.php?fn=authUser&gr=35&a=8c57776b63174afa529a253814e1bde72e316fab|d4de5c0447858bb08ee0760043a6abb8589a8a39&x=XOmoVd124LaIf03i2sgD|d4de5c0447858bb08ee0760043a6abb8589a8a39&z=d4de5c0447858bb08ee0760043a6abb8589a8a39&t=0&panelOpen=inicio10 dicas de segurança para desenvolvedores
  • 10. Segurança de Aplicações WEB e Open SourceAlexandreMarcolino07 – Criptografia ( SSL, TLS, etc... ) e certificados digitaisAlgo tão simples e tão no dia a dia que a galera simplesmente deixade 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 SourceAlexandreMarcolino08 – LOG e Tratamento de ErrosArmazenar os LOGS de forma simples, de fácil acesso e compreensão,preservados e gerenciados adequadamente.SYSLOG-NGNão cuspa o erro no LOG só porque você é capaz de saber o que elesignifica. Crie uma transação única que trata todos os erros e documentaeles adequadamente nos LOGS. Isso servirá como uma evidência real.Guarde junto com o seu erro TUDO QUE PUDER sobre o que o usuárioestava transacionando. E sincronize isso com o registro da AUDITORIA daaplicação. Você vai me agradecer um dia.10 dicas de segurança para desenvolvedores
  • 12. Segurança de Aplicações WEB e Open SourceAlexandreMarcolino08 – LOG e Tratamento de ErrosLog MUITO RUIM:[Thread-4986] 26-04-2012 11:56:36.736 > ERROR (?:?) - Ocorreu erro no tratamento ou envio dosocket do BANCO XXXX br.com.sistema.cartao.exception.IFException: Ocorreu erro ao efetivar obloqueio 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 more10 dicas de segurança para desenvolvedores
  • 13. Segurança de Aplicações WEB e Open SourceAlexandreMarcolino08 – LOG e Tratamento de ErrosLog 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 number10 dicas de segurança para desenvolvedores
  • 14. Segurança de Aplicações WEB e Open SourceAlexandreMarcolino09 – Proteção dos DadosBackupNã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 debanco tem que acompanhar isso. O ideal é que o usuário que loga no sistemaseja o que existe no banco e ambos tenham seus repositórios de usuáriosaderentes a solução de SSO escolhida.10 dicas de segurança para desenvolvedores
  • 15. Segurança de Aplicações WEB e Open SourceAlexandreMarcolino10 – Proteção das ComunicaçõesRedes de dados controladas e certificadas.Se você pretende usar WIFI, Criptografia.Internet, Firewall, IDS, Proxy Reverso para um filtro inicial de conexõesindesejadas e outros ativos de segurança devem fazer parte do aparato de quesustenta 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/AlexandreMarcolinotwitter.com/ajmarcolwww.owasp.orgAlexandreMarcolino

×