Quebra de autenticação e Gerenciamento de Sessão A3 Cross-Site Scripting (XSS) A4 Referência Insegura e Direta a Objetos A5 Configuração Incorreta de Segurança A6 Exposição de Dados Sensíveis A7 Falta de Função para Controle do Nível de Acesso A8 Cross-Site Request Forgery (CSRF) A9 Utilização de Componentes Vulneráveis Conhecidos A10 Redirecionamentos e Encaminhamentos Inválidos
o mesmo layout do original O usuário recebe esse site falso e submete o formulário O site falso tem um formulário que aponta para o site original aonde o usuário provavelmente está logado O site original recebe esse formulário e faz uma ação diferente da intenção do usuário
resource = password.present? && mapping.to.find_for_database_authentication(authentication_hash) hashed = false if validate(resource){ hashed = true; resource.valid_password?(password) } remember_me(resource) resource.after_database_authentication success!(resource) end mapping.to.new.password = password if !hashed && Devise.paranoid fail(:not_found_in_database) unless resource end end end end
cost = options[:cost] || BCrypt::Engine.cost raise ArgumentError if cost > 31 Password.new(BCrypt::Engine.hash_secret(secret, BCrypt::Engine.generate_salt(cost))) end Isso gera um salt randômico pass = BCrypt::Password.create(PASSWORD)
do Rails, você filtra dados? • Deveria auditar logs? • StatsD+Grafana para estatísticas de segurança • Brakeman no seu Build • Segurança do teu servidor • Autenticação apenas por SSH (keys) • Libere apenas as portas necessárias • … Outras coisas
Quebra de autenticação e Gerenciamento de Sessão A3 Cross-Site Scripting (XSS) A4 Referência Insegura e Direta a Objetos A5 Configuração Incorreta de Segurança A6 Exposição de Dados Sensíveis A7 Falta de Função para Controle do Nível de Acesso A8 Cross-Site Request Forgery (CSRF) A9 Utilização de Componentes Vulneráveis Conhecidos A10 Redirecionamentos e Encaminhamentos Inválidos
a lista de segurança: [email protected] • Contate diretamente o atual coordenador de segurança: Rafael França • Contate diretamente o contato de backup: Jeremy Daer