Você está na página 1de 24

Tópicos Comece a aprender Pesquise mais de 50.

000 cursos, even… O que há de novo

conteúdo

prefácio

agradecimentos

sobre este livro

Sobre o autor

sobre a ilustração da capa

  

Parte 1.Fundações

  1O que é segurança de API?


  1.1   Uma analogia: Fazendo o exame de direção

  1.2   O que é uma API?

estilos de API

  1.3   Segurança da API no contexto

Uma implantação típica de API

  1.4   Elementos de segurança da API

Ativos

Objetivos de segurança

Ambientes e modelos de ameaças

  1.5   Mecanismos de segurança

Criptografia

Identificação e autenticação

Controle de acesso e autorização

Log de auditoria

Limitação de taxa
  2Desenvolvimento seguro de API
  2.1   A API do Natter

Visão geral da API do Natter

Visão geral da implementação

Configurando o projeto

Inicializando o banco de dados

  2.2   Desenvolvendo a API REST

Criando um novo espaço

  2.3   Conectando os endpoints REST

Experimentando

  2.4   Ataques de injeção

Prevenção de ataques de injeção

Mitigando a injeção de SQL com permissões

  2.5   Validação de entrada

  2.6   Produção de saída segura

Explorando ataques XSS


Prevenção de XSS

Implementando as proteções

  3Protegendo a API do Natter


  3.1   Lidando com ameaças com controles de segurança

  3.2   Limitação de taxa para disponibilidade

Limitação de taxa com goiaba

  3.3   Autenticação para evitar spoofing

Autenticação básica HTTP

Armazenamento seguro de senhas com Scrypt

Criando o banco de dados de senhas

Registrando usuários na API do Natter

Autenticando usuários

  3.4   Usando criptografia para manter os dados privados

Habilitando HTTPS

Segurança de transporte estrita

  3.5   Log de auditoria para responsabilidade

  3.6   Controle de acesso

Impondo autenticação
Listas de controle de acesso

Aplicando o controle de acesso em Natter

Adicionando novos membros a um espaço Natter

Evitando ataques de escalonamento de privilégios

Parte 2.Autenticação baseada em token

  4Autenticação de cookie de sessão


  4.1   Autenticação em navegadores da web

Chamando a API Natter a partir do JavaScript

Interceptando o envio do formulário

Servindo o HTML da mesma origem

Desvantagens da autenticação HTTP

  4.2   Autenticação baseada em token

Uma abstração de armazenamento de token

Implementando login baseado em token

  4.2   Cookies de sessão

Evitando ataques de fixação de sessão

Atributos de segurança de cookies

Validando cookies de sessão

  4.3   Prevenção de ataques de falsificação de solicitação entre sites

Cookies do mesmo site

Cookies de envio duplo baseados em hash


Cookies de envio duplo para a API Natter

  4.4   Construindo a IU de login do Natter

Chamando a API de login do JavaScript

  4.5   Implementando logoff

  5Autenticação moderna baseada em token


  5.1   Permitindo solicitações entre domínios com CORS

Solicitações de simulação

Cabeçalhos CORS

Adicionando cabeçalhos CORS à API Natter

  5.2   Tokens sem cookies

Armazenando o estado do token em um banco de dados

O esquema de autenticação do portador

Excluindo tokens expirados

Armazenando tokens no armazenamento da Web

Atualizando o filtro CORS

Ataques XSS no armazenamento da Web

  5.3   Fortalecendo o armazenamento de token do banco de dados

Hashing de tokens de banco de dados

Autenticação de tokens com HMAC

Protegendo atributos confidenciais


  6Tokens independentes e JWTs
  6.1   Armazenando o estado do token no cliente

Protegendo tokens JSON com HMAC

  6.2   Tokens Web JSON

As declarações JWT padrão

O cabeçalho JOSE

Gerando JWTs padrão

Validando um JWT assinado

  6.3   Criptografando atributos confidenciais

Criptografia autenticada

Criptografia autenticada com NaCl

JWTs criptografados

Usando uma biblioteca JWT

  6.4   Usando tipos para design de API seguro

  6.5   Lidando com a revogação do token

Implementando tokens híbridos


Parte 3.Autorização

  7Conexão OAuth2 e OpenID


  7.1   Tokens com escopo

Adicionando tokens com escopo ao Natter

A diferença entre escopos e permissões

  7.2   Introdução ao OAuth

tipos de clientes

Concessões de autorização

Descobrindo endpoints OAuth2

  7.3   A concessão do Código de Autorização

URIs de redirecionamento para diferentes tipos de clientes

Fortalecimento da troca de código com PKCE

Atualizar tokens

  7.4   Validando um token de acesso

Introspecção de token

Protegendo a configuração do cliente HTTPS

Revogação de token
Tokens de acesso JWT

Tokens de acesso JWT criptografados

Deixando o AS descriptografar os tokens

  7.5   Logon único

  7.6   Conexão OpenID

tokens de identificação

Endurecimento OIDC

Passando um token de ID para uma API

  8Controle de acesso baseado em identidade


  8.1   Usuários e grupos

Grupos LDAP

  8.2   Controle de acesso baseado em função

Mapeamento de funções para permissões

funções estáticas

Determinando as funções do usuário

Funções dinâmicas

  8.3   Controle de acesso baseado em atributos

Combinando decisões

Implementando decisões ABAC

Agentes de política e gateways de API

Aplicação de política distribuída e XACML

Práticas recomendadas para ABAC

  9Segurança baseada em capacidade e macaroons


  9.1   Segurança baseada em capacidade

  9.2   Capacidades e REST

Capacidades como URIs

Usando URIs de capacidade na API Natter

HATEOAS

URIs de capacidade para clientes baseados em navegador

Combinando recursos com identidade

URIs de capacidade de proteção

  9.3   Macaroons: Tokens com ressalvas

Advertências contextuais

Uma loja de tokens de macarons

Advertências próprias

Advertências de terceiros

Parte 4.APIs de microsserviço no Kubernetes

10APIs de microsserviço no Kubernetes


10.1   APIs de microsserviços no Kubernetes

10.2   Implantando o Natter no Kubernetes

Construindo banco de dados H2 como um contêiner Docker

Como implantar o banco de dados no Kubernetes

Construindo a API do Natter como um contêiner do Docker

O microsserviço de visualização de link 353 Implantando o novo microsserviço

Chamando o microsserviço de visualização de link

Prevenção de ataques SSRF

Ataques de religação de DNS

10.3   Protegendo as comunicações de microsserviço

Protegendo as comunicações com TLS

Usando uma malha de serviço para TLS

Bloqueando conexões de rede

10.4   Protegendo solicitações recebidas

11Protegendo APIs serviço a serviço


11.1   Chaves de API e autenticação de portador JWT

11.2   A concessão de credenciais de cliente OAuth2

Contas de serviço

11.3   A concessão do portador JWT para OAuth

Autenticação do cliente

Gerando o JWT

Autenticação da conta de serviço

11.4   Autenticação TLS mútua

Como funciona a autenticação do certificado TLS

Autenticação de certificado de cliente

Verificando a identidade do cliente

Usando uma malha de serviço

TLS mútuo com OAuth

Tokens de acesso vinculados a certificado

11.5   Gerenciando credenciais de serviço


Segredos do Kubernetes

Serviços de gerenciamento de chaves e segredos

Evitando segredos de longa duração no disco

derivação chave

11.6   Chamadas de API de serviço em resposta a solicitações de usuários

O padrão de token fantasma

Troca de token OAuth2

Parte 5.APIs para a Internet das Coisas

12Protegendo as comunicações da IoT


12.1   Segurança da camada de transporte

Datagrama TLS

Conjuntos de cifras para dispositivos restritos

12.2   Chaves pré-compartilhadas

Implementando um servidor PSK

O cliente PSK

Compatível com conjuntos de cifras PSK brutas

PSK com sigilo de encaminhamento

12.3   Segurança de ponta a ponta

COSE

Alternativas ao COSE

Criptografia autenticada resistente ao uso indevido

12.4   Distribuição e gerenciamento de chaves

Provisionamento de chave único

Servidores de distribuição de chaves


Ratcheting para sigilo avançado

Segurança pós-compromisso

13Protegendo APIs de IoT


13.1   Dispositivos de autenticação

Dispositivos de identificação

Certificados de dispositivo

Autenticação na camada de transporte

13.2   Autenticação de ponta a ponta

OSCORE

Evitando repetição em APIs REST

13.3   OAuth2 para ambientes restritos

A concessão de autorização do dispositivo

ACE-OAuth

13.4   Controle de acesso off-line

Autenticação de usuário off-line

Autorização off-line

  

apêndice A.Configurando Java e Maven


Apêndice B.Configurando o Kubernetes

  

índice

Você também pode gostar