O documento discute tópicos importantes de segurança em aplicações Rails, incluindo: 1) Como sessões funcionam e como mantê-las seguras; 2) Problemas como roubo e reenvio de sessões e como evitá-los; 3) Boas práticas como não armazenar dados críticos em sessões.
Tunning PostgreSQL em modo OGRO - 13º LatinowareGerdan Santos
Uma palestra cômica, que visa discutir os parâmetros mais utilizados nas configurações do PostgreSQL, afim de obter melhor performance no banco de dados englobando as atividades do dia a dia para recovering e ambientes OLTP e/ou Data warehouse.
Construindo uma Aplicação PHP à Prova de BalasRafael Jaques
Palestra apresentada por Rafael Jaques no Tchelinux - Edição Porto Alegre em 17/11/2009.
O foco é demonstrar algumas brechas que comumente não são consideradas pelos desenvolvedores.
Construindo uma Aplicação PHP à Prova de Balas - 2010Rafael Jaques
Palestra apresentada por Rafael Jaques no FISL 11 [Porto Alegre] em 24/07/2010.
O foco da apresentação é atentar o desenvolvedor para brechas que comumente não são consideradas, lembradas ou não tem seu devido valor dado.
Mostra um leque variado de formas de ataque e como se defender destes modos de invasão.
PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael JaquesRafael Jaques
Palestra apresentada por Rafael Jaques no FISL 12 [Porto Alegre] em 01/07/2011.
A apresentação visa mostrar ao desenvolvedor que o foco dos crackers não é mais a aplicação e sim os usuários da mesma.
Fornece um bom panorama, fala um pouco sobre engenharia social e técnicas para evitar o caos.
Apresentação de boas práticas de segurança nas aplicações web. Contempla princípios de Segurança da informação, prevenção a ataques cross-site scripting, SQL injection e cross-site request forgery.
Neste Vídeo em português você vai saber tudo sobre Ransomware, o vírus sequestrador:
- A lucrativa indústria do cibercrime no Brasil e no Mundo.
- Como um Ransomware pode infectar você e sua empresa.
- Todas as famílias de Ransomware já identificadas.
- As 5 razões para não negociar com os bandidos.
- Um guia definitivo de como você pode proteger sua empresa.
Tunning PostgreSQL em modo OGRO - 13º LatinowareGerdan Santos
Uma palestra cômica, que visa discutir os parâmetros mais utilizados nas configurações do PostgreSQL, afim de obter melhor performance no banco de dados englobando as atividades do dia a dia para recovering e ambientes OLTP e/ou Data warehouse.
Construindo uma Aplicação PHP à Prova de BalasRafael Jaques
Palestra apresentada por Rafael Jaques no Tchelinux - Edição Porto Alegre em 17/11/2009.
O foco é demonstrar algumas brechas que comumente não são consideradas pelos desenvolvedores.
Construindo uma Aplicação PHP à Prova de Balas - 2010Rafael Jaques
Palestra apresentada por Rafael Jaques no FISL 11 [Porto Alegre] em 24/07/2010.
O foco da apresentação é atentar o desenvolvedor para brechas que comumente não são consideradas, lembradas ou não tem seu devido valor dado.
Mostra um leque variado de formas de ataque e como se defender destes modos de invasão.
PHP Sob Ataque - Técnicas de Programação Defensiva - FISL 12 - Rafael JaquesRafael Jaques
Palestra apresentada por Rafael Jaques no FISL 12 [Porto Alegre] em 01/07/2011.
A apresentação visa mostrar ao desenvolvedor que o foco dos crackers não é mais a aplicação e sim os usuários da mesma.
Fornece um bom panorama, fala um pouco sobre engenharia social e técnicas para evitar o caos.
Apresentação de boas práticas de segurança nas aplicações web. Contempla princípios de Segurança da informação, prevenção a ataques cross-site scripting, SQL injection e cross-site request forgery.
Neste Vídeo em português você vai saber tudo sobre Ransomware, o vírus sequestrador:
- A lucrativa indústria do cibercrime no Brasil e no Mundo.
- Como um Ransomware pode infectar você e sua empresa.
- Todas as famílias de Ransomware já identificadas.
- As 5 razões para não negociar com os bandidos.
- Um guia definitivo de como você pode proteger sua empresa.
A palestra comenta desde problemas básicos a avançados discutindo conceitos de informação e segurança da informação para identificar pessoas envolvidas na tarefa de segurança de um sistemas Web, Também descreve como podemos evitar com que sistemas PHPs sejam invadidos e estejam sempre disponíveis para atender a usuários humanos.
Apresentação do meu artigo chamado "Pentesting Auto-ensinado" para a disciplina de Segurança de Sistemas Distribuídos do Pós-Graduação em Ciência da Computação (Mestrado).
Introdução ao Desenvolvimento WEB com Ruby on RailsJulio Betta
Slides que utilizei para ministrar uma palestra sobre Desenvolvimento WEB com Ruby on Rails no IV Congresso de Iniciação Científica da Faculdade Redentor de Itaperuna / RJ.
Versão PDF aqui: https://www.dropbox.com/s/2fkwksu00chm7nu/presentation.pdf
Introdução ao Ruby on Rails. O que é e quais são suas principais características. Também explico como preparar um ambiente de desenvolvimento no Ubuntu, incluindo a configuração do gEdit e a instalação do Aptana RadRails.
Apresentação da Palestra sobre o Framework Django, utilizado no desenvolvimento de sites e aplicações web. Na apresentação são mostrados os recursos do Django, citando seu ORM, acesso a bancos de dados, templates, cache, views, urls e diversos outros recursos.
A palestra comenta desde problemas básicos a avançados discutindo conceitos de informação e segurança da informação para identificar pessoas envolvidas na tarefa de segurança de um sistemas Web, Também descreve como podemos evitar com que sistemas PHPs sejam invadidos e estejam sempre disponíveis para atender a usuários humanos.
Apresentação do meu artigo chamado "Pentesting Auto-ensinado" para a disciplina de Segurança de Sistemas Distribuídos do Pós-Graduação em Ciência da Computação (Mestrado).
Introdução ao Desenvolvimento WEB com Ruby on RailsJulio Betta
Slides que utilizei para ministrar uma palestra sobre Desenvolvimento WEB com Ruby on Rails no IV Congresso de Iniciação Científica da Faculdade Redentor de Itaperuna / RJ.
Versão PDF aqui: https://www.dropbox.com/s/2fkwksu00chm7nu/presentation.pdf
Introdução ao Ruby on Rails. O que é e quais são suas principais características. Também explico como preparar um ambiente de desenvolvimento no Ubuntu, incluindo a configuração do gEdit e a instalação do Aptana RadRails.
Apresentação da Palestra sobre o Framework Django, utilizado no desenvolvimento de sites e aplicações web. Na apresentação são mostrados os recursos do Django, citando seu ORM, acesso a bancos de dados, templates, cache, views, urls e diversos outros recursos.
Introdução a Linguagem de Programação RubyDiego Rubin
Apresentação utilizada em palestra na ETEC Prof. Armando Bayeux da Silva em 2008 e na Semana de Estudos do curso de Sistemas de Informação na faculdade Asser de Rio Claro em 2009.
Os serviços prestados via aplicações web são cada vez mais críticos. Esse serviços na maioria das vezes envolvem pagamentos de mensalidades e até mesmo ganho de créditos que podem ser revertidos em produtos posteriormente. A segurança deve ser estudada com muita atenção e calma para minimizar as chances de invasão, prestando assim, um serviço de melhor qualidade para o cliente final.
A Tenchi Security tem o prazer de convidá-lo para um evento da série de Security and Cloud. O formato é uma sequência de webinars para profissionais de operações, desenvolvimento, tecnologia e segurança da informação, dependendo do tema do webinar.
Nesta 1ª edição temos apoio da Aqua Security e iremos tratar do tema segurança de DevOps em ambientes de nuvem. Serão discutidos o uso de alta freqüência de deployment, pipelines de CI/CD, e o uso de containers ou adoção de aplicações serverless no contexto corporativo. Em especial, quais os benefícios para o negócio, os riscos à segurança da informação e os controles que o mercado tem adotado para mitigá-los.
O evento terá duração de 1 hora, sendo:
* 25 min - Apresentação de Segurança de DevOps por Alexandre Sieira, Fundador da da Tenchi Security;
* 25 min - Apresentação de Soluções de Segurança de Aplicativos Cloud Native por Carolina Bozza, Regional Sales Director da Aqua Security; e
* 10 min – Dúvidas e respostas.
Gravação do webinar pode ser assistida em https://youtu.be/ac339gAqtj4
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferreira.
Webinar sobre este assunto também disponível em http://www.blog.clavis.com.br/webinar-20-as-principais-vulnerabilidades-em-aplicacoes-web-owasp-top-10-2013/
Palestra - Darkmira Tour PHP 2016 - A ilusão das referências sobre desenvolv...Thiago Dieb
No desenvolvimento de uma aplicação PHP, o procedimento adotado pela maioria, ainda continua sendo a pesquisa na internet para achar exemplos de códigos, utilizando o google, bing, e os diversos motores de busca.
O fator preocupante relaciona-se as buscas a respeito de desenvolvimento seguro, muito programados não sabem como criar seus código com segurança e consequentemente recorrerem à internet. A grande questão está voltada para a confiabilidade das informações publicadas nesses sites.
O objetivo da palestra é apresentar diversos códigos que estão predominantemente entre os primeiros resultados das pesquisas sobre desenvolvimento seguro e dentre os quais existem vulnerabilidades e problemas nas dicas e tutoriais descritos.
Além de demonstrar e explorar as vulnerabilidades dos códigos publicados, também será apresentado as correções e os procedimentos de teste.
Precisamos de um barco maior introdução ao dimensionamento de aplicaçõesJackson F. de A. Mafra
Em um momento ou outro, todo desenvolvedor se depara com o mesmo problema - seu aplicativo começa a ficar mais lento, começa a cair e não está disponível.
Muitas vezes, isso se resume a muitos usuários, muitos dados armazenados - em outras palavras, um problema de escala.
Analisando uma gama de opções, desde escalonamento horizontal e vertical até cache, fragmentação e otimização, veremos abordagens de escalonamento que podem ser usadas em novas aplicações e também algumas que podem ser adaptadas retroativamente a aplicações existentes.
Como invadir uma exchange - Um relatório geral de segurança de corretoras de ...LeandroTrindade19
Nesta apresentação é mostrado um relatório geral da segurança em corretoras de criptomoedas brasileiras, algumas das vulnerabilidades que ajudamos a corrigir ao longo dos anos de 2017, 2018 e 2019 para impedir vazamentos de dados e recursos dos clientes e as motivações por trás do laboratório de segurança aCCESS Security Labs
Uma palestra prática mostrando as principais falhas em arquiteturas web e como desenvolver projetos com segurança. São exibidos também recursos do Azure para fortalecer tecnologias.
Desenvolvendo sistemas seguros com PHPFlavio Souza
Nesta palestra, abordo as principais formas de ataque, assim como diversas dicas de programação com PHP para tornar o seu sistema cada vez mais seguro, assim como também dicas de configurações do php.ini.
2. O palestrante (eu)
• Desenvolvedor de
software desde 1989;
• Membro do NetBeans
Translation Team;
• Um dos fundadores
do grupo de usuários
de Ruby de SP;
• Idealizador do evento
Ruby + Rails no
mundo real.
3. O que é segurança?
• Confiabilidade
• Integridade
• Confidencialidade
4. Confiabilidade
• Em geral, confiabilidade (definição
sistêmica) é a capacidade de uma pessoa
ou sistema de realizar e manter seu
funcionamento em circunstâncias de
rotina, bem como em circunstâncias hostis
e inesperadas.
• http://pt.wikipedia.org/wiki/Confiabilidade
5. Integridade
• Em segurança da informação integridade
significa ter a disponibilidade de
informações confiáveis, corretas e
dispostas em formato compatível com o
de utilização, ou seja, informações
íntegras.
• http://pt.wikipedia.org/wiki/Integridade
6. Confidencialidade
• Confidencialidade é a propriedade de que
a informação não estará disponível ou
divulgada a indivíduos, entidades ou
processos sem autorização.
• http://pt.wikipedia.org/wiki/Confidencialidade
7. O que é segurança?
• Confiabilidade
• Integridade
• Confidencialidade
14. HTTP É UM PROTOCOLO QUE
NÃO MANTÉM ESTADO
Sessões fazem com o estado seja mantido.
15. O Que é uma sessão?
• Uma sessão consiste em um hash de
valores e um id de sessão, geralmente
uma string com 32 caracteres, para
identificar o hash.
• Cada cookie enviado para o browser do
usuário inclui o id de sessão.
• No caminho inverso, o browser enviará o
id de sessão para o servidor em cada
request.
16. Pra que serve uma sessão?
• A maioria das aplicações precisam ter
controle sobre alguns aspectos
relacionados ao estado de um usuário
particular como um carrinho de compras
ou o id do usuário atualmente autenticado.
• Sem a ideia de sessões, o usuário teria
que se identificar a cada nova requisição.
19. Rails e Sessões
• O Rails fornece vários métodos para
salvar os dados de sessões, incluindo o
ActiveRecordStore e o CookieStore.
• O ActiveRecordStore salva os dados da
sessão numa tabela no banco de dados.
• O CookieStore salva os dados da sessão
como um cookie no cliente.
20. Por que não usar cookies?
• Outro exemplo clássico de problema com
cookies é o “replay de cookies”.
21. Replay de cookies
Um usuário recebe
créditos, o valor é
armazenado na sessão (o
que é uma má idéia, de
qualquer forma, mas nós
iremos fazer isso para fins
de demonstração).
O usuário compra algo.
22. Replay de cookies
Seu novo
crédito, mais
baixo, será
armazenado na
sessão.
O lado negro do
usuário o força a
pegar o cookie do
primeiro passo (o
qual ele copiou) e
substituir o cookie
atual no
navegador.
O usuário tem
seus créditos de
volta.
23. Como evitar?
• A melhor solução contra ataques de
replay é não guardar este tipo de
informação no cookie de sessão, mas sim
no banco de dados.
• Neste caso guarde os créditos no banco
de dados o id do usuário atual na sessão
(pode ser até num cookie, apesar de eu
nunca achar uma boa idéia usar cookies).
24. Evitar cookies na minha aplicação
• Para não usar cookies em sua aplicação vá
em config/initializers/session_store.rb e
use:
ActionController::Base.session_store = :active_record_store
26. Como evitar?
• Uma única linha de código salva sua vida
nesses casos:
reset_session
27. user_sessions_controller.rb
def create
reset_session
@client_session = ClientSession.new(params[:client_session])
if @client_session.save
flash[:notice] = "Login successful!"
redirect_back_or_default '/'
else
flash[:notice] = "Invalid login name or password."
render :action => :new
end
end
28. Outras maneiras de proteger-se
• salvar propriedades específicas do
usuário na sessão,
• verificá-las a cada novo request,
• negar acesso se a informação não bater.
29. Não use o IP para salvar dados
• Ao salvar o endereço IP, você deve ter em
mente que existem provedores de
serviços de Internet ou grandes
organizações que colocam seus usuários
atrás de proxies. Estes proxies podem
mudar durante a duração de uma sessão,
logo estes usuários não serão capazes de
utilizar sua aplicação, ou apenas poderão
usá-la de forma limitada.
30. Resumo sobre sessões
• Use authlogic ou algo parecido para
gerenciar logins em seu software.
• Use algoritmos de criptografia complexos,
nada de hashes. O BCrypt é a melhor
opção.
• Reinicie sempre a sessão antes de a criar.
• Evite usar cookies sempre que possível.
• Evite usar o IP para manter dados em
sessões.
31. Boas práticas em sessões
• Não guarde dados críticos na sessão.
• Não guarde objetos muito grandes
em uma sessão.
• Evite usar cookies para armazenar
dados da sessão.
35. Como funciona
• Bob navega por um fórum de discussão e visualiza uma
mensagem criada por um hacker onde existe um elemento
HTML de imagem forjado. O elemento referencia um
comando na aplicação de gerenciamento de projetos de
Bob, ao invés de um arquivo de imagem.
<img src="http://www.webapp.com/project/1/destroy"/>
• A sessão de Bob em www.webapp.com ainda está ativa,
porque ele não fez seu logout alguns minutos atrás.
• Por acessar a mensagem, o navegador encontra uma tag
de imagem. Ele tenta carregar a imagem suspeita a partir
de www.webapp.com. Como explicado anteriormente, ele
também enviará o cookie com id de sessão válido.
36. Como funciona
• A aplicação web em www.webapp.com verifica a
informação do usuário no respectivo hash de sessão e
destroy o projeto com ID 1. Ele então retorna a página
com o resultado da operação, o que é um resultado
inesperado para o navegador, logo ele não irá exibir a
imagem.
• Bob não percebe o ataque — Mas alguns dias mais
tarde ele percebe que o projeto número um se foi.
38. Como evitar?
• Saiba como usar o HTTP:
• Get serve para perguntas, como uma
pesquisa ou operação de leitura;
• Post server para executar ordens.
• É muito importante conhecer HTTP pois
ele é a base de aplicações internet.
• É muito importante conhecer o Rest, pois
o Rails faz uso de Rest o tempo todo.
39. “Every developer
working with the Web
needs to read this
book.”
David Heinemeier
Hansson, creator of
the Rails framework
40. Injection
• Injeção é uma categoria de ataques que
introduzem código malicioso ou
parâmetros em uma aplicação web de
forma a executar estes códigos dentro do
contexto de segurança da aplicação. Os
exemplos mais proeminentes de injeção
são o cross-site scriptintg (XSS) e o SQL
injection.
41. Injection não é algo simples
• Injeção é algo complicado, porque um
mesmo código ou parâmetro pode ser
malicioso em um contexto e
completamente inofensivo em outro. Um
contexto pode ser um script, uma query ou
linguagem de programação, o shell ou um
método do Ruby/Rails.
42. SQL Injection no banco de dados de usuários do
Speedy, em 10 de julho de 2009
http://telefonica.ath.cx/
43. SQL INJECTION NÃO É
EXCLUSIVIDADE DO RAILS
O site da telefonica é em PHP.
44. USUÁRIOS SEMPRE SÃO A
PARTE MAIS FRÁGIL DA
SEGURANÇA
E não há nada que você possa fazer.
46. Gerenciamento de usuários
• Exija a autenticação de usuários usando
plugins prontos para isso, como o
Authlogic;
• No cadastramento de seu usuário, exija
que o mesmo digite duas vezes a senha e
o e-mail;
• Crie regras para que o usuário não crie
senhas como “eu” ou “senha”.
Antes de começar vamos falar de duas coisas, o que é segurança e se seu site é seguro.
Antes de começar vamos falar de duas coisas, o que é segurança e se seu site é seguro.
Perguntar para o pessoal da platéia quem tem programas rails rodando em versões menores do que a 2.3.3
Pedir para o pessoal dar exemplo de aplicações com sessões
Se você utiliza o popular plugin RestfulAuthentication para manutenção de usuários, adicione reset_session à action SessionsController#create. Note que isso remove qualquer valor da sessão, você precisa transferi-los para a nova sessão.
Bcrypt é mais lento, e mais eficiente. O algoritmo usado no BCrypt é blowfish, o mesmo usado no FreeBSD e no Linux kernel,v2.5.47ou superior. Muitos preferem o md5 ou o sha1 por serem mais rápidos.