Pular para conteúdo

Fundamentos de Segurança

Segurança é propriedade do sistema. Adicionar filter chain não compensa limite de confiança indefinido, segredos expostos ou regras de autorização ausentes.

Autenticação e autorização

  • Autenticação estabelece identidade ou principal.
  • Autorização decide se o principal pode executar uma ação sobre um recurso.

O suporte servlet do Spring Security opera por filtros. O contexto de segurança representa o principal autenticado e suas authorities. Aplique autorização em requisições e métodos deliberadamente; não confie apenas em ocultar controles da UI.

@Bean
SecurityFilterChain apiSecurity(HttpSecurity http) throws Exception {
    return http
            .authorizeHttpRequests(authorize -> authorize
                    .requestMatchers(HttpMethod.GET, "/books/**").permitAll()
                    .anyRequest().authenticated())
            .httpBasic(Customizer.withDefaults())
            .build();
}

Este é um mínimo didático, não uma política universal de produção.

Ameaças web

  • Use proteção CSRF em requisições de navegador autenticadas por credenciais enviadas automaticamente, salvo arquitetura segura diferente.
  • CORS controla quais origens podem ler respostas; não é autenticação.
  • Codifique saída não confiável para o contexto de destino e evite injection.
  • Use banco parametrizado, tratamento estrito da entrada e privilégio mínimo.
  • Defina políticas seguras de transporte, cookies e cabeçalhos.

Credenciais e tokens

Armazene senhas com função adaptativa unidirecional por encoder adequado; não as criptografe para recuperação. Faça rotação, limite o escopo e use armazenamento gerenciado, fora do controle de versão e dos logs.

JWT assinado não é criptografado por padrão. Valide issuer, audience, assinatura, tempo, algoritmos aceitos e autorização. Planeje revogação, rotação, clock skew e vida do token.

Evite revelar se identificador protegido existe quando isso for sensível. Registre eventos de segurança sem credenciais nem tokens completos.

Consulte a arquitetura oficial do Spring Security.