# Dados sensiveis remote service
Objetivo é minimizar a exposição e dificultar a obtenção indevida dos dados das credenciais cadastradas.
## Cenário atual
Atualmente todos os dados das credenciais são retornados ao consultar a listagem delas. Porém em PRD está sendo utilizado HTTPS minizando o vazamento dessas informações, além de apenas administradores conseguirem realizar essas consultas.
Dessa forma já temos uma segurança regular.
**Dados sensíveis:**
- Basic
- password
- Token
- value
- Oauth 1.0
- Secret token
## Opções para aumentar segurança
### 1 - Criptografia
Essa opção consiste em usar uma criptografia assimétrica nos dados sensíveis, ou seja, criptografar os dados sensiveis no backend com uma chave privada e decripta-los no frontend com uma chave pública.
Isso vai criar mais uma barreira de dificuldade pra quem quiser obter esses dados indevidamente.
**Ponto negativo:** a chave publica fica exposta no código do frontend e com isso os dados sensíveis ainda podem ser obtidos.
**Endpoints inpactados**
- GET - */*
- GET - */{id}*
- POST - */search*
### 2 - Não expor dados sensíveis cadastrados
Esta opção consiste em após os dados sensíveis forem enviados ao backend não serão mais expostos na API.
Para isso alguns contratos devem ser alterados, sendo eles:
- **List** - */*
Atualmente o list manda todas as informações das credenciais no list, poderiamos limitar apenas as informações comuns entre as credencias sem expor dados sensíveis.
- **Get id** - */{id}*
Hoje é exposto todas as informações da credencial. Não dá pra simplesmente remover os dados sensíveis desse end-point pois esses dados são utilizados para fazer as alterações no registro.
Para corrigir isso poderiamos criar end-points especificos para manipular os dados sensiveis de uma credencial e utilizar o CRUD padrão apenas para os dados restantes.
Isso tudo implica em uma alteração de API e fluxo de tela.
- **Put update** - */{id}*
Dividir em dois end-points, sendo:
- `/{id}` - Que seria o que ja temos hoje, porem teria somente os dados não sensiveis.
- `/{id}/secret` - End-point específico para alteração dos dados sensiveis.
No corpo seria enviado o tipo da credencial, e os dados a serem alterados.
**Obs**: Método post não precisa ser alterado.
**Ponto negativo:** Essas alterações levam a uma quebra da API e tempo de desenvolvimento pode ser um pouco mais extenso que a primeira opção.