O Projeto RubyGuard é uma aplicação backend desenvolvida para demonstrar a capacidade técnica e criativa do candidato, com ênfase especial na segurança e na consideração das vulnerabilidades típicas de aplicações backend.
Para garantir uma autenticação robusta e segura, o RubyGuard utiliza as gems 'Devise' e 'Devise-JWT'. Abaixo, detalhamos a funcionalidade proporcionada por cada uma:
A gem 'Devise' é uma solução completa para autenticação de usuários no ambiente Ruby on Rails. Oferece funcionalidades essenciais, como login, registro, recuperação de senha e gerenciamento de sessão. Suas principais características incluem:
- Flexibilidade de Configuração: Devise permite uma configuração flexível para atender às necessidades específicas do projeto.
- Gestão de Sessões: Controle de sessões de usuário, incluindo a capacidade de encerrar sessões remotamente.
- Segurança: Implementa boas práticas de segurança, incluindo hashes seguros para senhas e proteção contra ataques de força bruta.
A gem 'Devise-JWT' é uma extensão do Devise que adiciona suporte para JSON Web Tokens (JWT). JWT é um padrão aberto (RFC 7519) que oferece uma forma compacta e segura de representar informações entre duas partes. As principais características incluem:
- Token-Based Authentication: Utilização de tokens JWT para autenticação, proporcionando uma alternativa eficiente ao uso de sessões tradicionais.
- Escalabilidade e Desempenho: Redução do uso de recursos do servidor, tornando a autenticação mais escalável.
- Expiração de Token: Configuração de expiração para tokens, aumentando a segurança da aplicação.
- Para configurar o ambiente de desenvolvimento, siga as instruções abaixo:
- Ruby 3.2.2
- Rails 7.1.2
- PostgreSQL
bundle install
npm install
exec foreman start -f Procfile.dev
rails db:create db:migrate
- O RubyGuard adota diversas práticas de segurança para proteger a aplicação contra vulnerabilidades comuns. Alguns pontos destacados incluem:
- Utilização da gem Devise para garantir autenticação robusta. A lógica de autenticação é testada de maneira abrangente para evitar falhas de segurança.
- A aplicação utiliza o mecanismo padrão do Rails para proteção contra ataques CSRF.
- Implementação de logs para eventos importantes, como login bem-sucedido.
- A sessão do usuário é regenerada após autenticação para evitar manipulações indevidas.
- Mecanismo para detectar e bloquear tentativas repetidas de login.
O RubyGuard possui testes automatizados que cobrem:
Modelos, controladores e serviços.
bundle exec rspec