NamedQuery permite informar atributos
Description
Problema
- O recurso de named query permite especificar na named query quais atributos a named query deve retornar. Entretanto, ao chamar o endpoint para retornar os dados da named query, se for especificado atributos não informados na named query, o endpoint está retornando esse atributos, representando um risco de vazamento de dados não definidos no contrato da named query.
Critério de Aceite
- Se a NQ possui informado os atributos para ser retornado no documento da NQ, deve ser ignorado a lista de atributos informado no endpoint {{/api/v3/queries/named/ {query_name}
}}.
- Para o cenário onde não existem
fields
configurados na NQ:- Caso o usuário não informe o
fields
na request, retornamos todos os campos (comportamento atual). - Caso o usuário infrme
fields=.
, retornamos todos os campos (comportamento atual). - Caso o usuário informe um ou mais
fields
, retornamos os fields informados (comportamento atual).
- Caso o usuário não informe o
- Para o cenário onde existem
fields
configurados na NQ:- Caso o usuário não informe o
fields
na request, retornamos apenas os fileds configurados (comportamento atual). - Caso o usuário informe
fields=.
, retornamos apenas os fileds configurados, ignorando os não configurados (ajuste na situação atual).- Caso informado “mdmGoldenFieldAndValues“, deve ser considerado todos os atributos na NQ.
- Todos os atributos do DM estão definidos como “nested” de “mdmGoldenFieldAndValues”.
- Caso o usuário informe um ou mais
fields
, retornamos apenas os fileds configurados, ignorando os não configurados (ajuste na situação atual).
- Caso o usuário não informe o
- Feature deve ser habilitada/desabilitada de forma global como feature flag. Se ocorrer algum impacto não mapeado podemos retornar ao comportamento anterior.
- Lista de chamadas para NQ com parâmetros de fields, esses são os possíveis impactos (requests dos ultimos 30 dias):
- Exemplo de NQ com os parâmetro de atributos configurado:
{
"mdmCacheRevalidationTimeInSeconds": 1800,
"mdmCacheTimeInSeconds": 10800,
"mdmCreated": "2023-09-08T21:49:25.140Z",
"mdmCreatedUser": "bruno.furtado@totvslab.com",
"mdmEntityType": "mdmNamedQuery",
"mdmFilterQuery": {
"excludeMergePending": false,
"indexType": "MASTER",
"minimumShouldMatch": 1,
"mustList": [
{
"mdmFilterType": "TYPE_FILTER",
"mdmValue": "employeeGolden"
},
{
"mdmFilterType": "TERMS_FILTER",
"mdmKey": "mdmGoldenFieldAndValues.mdmemailaddress.raw",
"mdmValue": "{{[emails]}}"
}
],
"mustNotList": [
{
"mdmFilterType": "EXISTS_FILTER",
"mdmKey": "mdmGoldenFieldAndValues.terminationdate"
}
],
"resolveRelationships": false
},
"mdmId": "1cb236698d984c1d93b2362091272e28",
"mdmLastUpdated": "2023-12-08T21:09:53.227Z",
"mdmQueryDescription": "Lista empregados utilizando o filtro do email.",
"mdmQueryName": "getEmployeesByEmails",
"mdmQueryPaid": false,
"mdmQueryParams": [
{
"mdmDeleted": false,
"mdmDescription": {},
"mdmEditable": true,
"mdmInherited": false,
"mdmLabel": {},
"mdmName": "[emails]",
"mdmRequired": false,
"mdmValueType": "string"
},
{
"mdmDeleted": false,
"mdmDescription": {},
"mdmEditable": true,
"mdmInherited": false,
"mdmLabel": {},
"mdmName": "emails",
"mdmRequired": false,
"mdmValueType": "string"
}
],
"mdmQueryPrice": 0,
"mdmQueryPricePerRecord": false,
"mdmReturnFields": [
"mdmGoldenFieldAndValues.mdmemailaddress",
"mdmGoldenFieldAndValues.imagecode",
"mdmGoldenFieldAndValues.mdmpersonid",
"mdmGoldenFieldAndValues.terminationdate",
"mdmGoldenFieldAndValues.mdmname",
"mdmGoldenFieldAndValues.mdmtaxid",
"mdmGoldenFieldAndValues.employeecode",
"mdmGoldenFieldAndValues.dataadmissao"
],
"mdmTags": [],
"mdmTenantId": "b57a7e74a1764003aa987288a610456e",
"mdmTimeoutInSeconds": 55,
"mdmType": "",
"mdmUpdatedUser": "bruno@furtado.me"
}
Texto abertura Issue Jira produção
- Issue Jira Produção: https://jiraproducao.totvs.com.br/browse/IDEIA-71
Desdobramento de conversa com Poffo a respeito de vulnerabilidades identificadas no Pentest.
Não permitir que o endpoint que executa a NQ altere os valores de atributos definidos na NQ.
Issue BE: impedir o uso do "." para retornar todos os atributos, evitar especificar os atributos.
Activity
Show:
Valor anterior do campo deployment date era 2024-06-25T12:44:00.0+0000. Parece ter ocorrido um novo deploy nesta issue.
Esta issue foi automaticamente movida para WAITING DEPLOY, pois a issue relacionada de QA regression também chegou ao status WAITING DEPLOY (PR foi mergeado na branch master no Github).
Github Commit:
Esta issue foi automaticamente movida para TESTED & MERGED, pois o PR foi mergeado na branch Develop no Github. PR aprovado por lucasnoetzold,douglascoimbra.
Github usuário douglascoimbra aprovou um PR e foi adicionado como Shared Assignee nesta issue.
feat: https://totvsideia.atlassian.net/browse/CAPL-6073#icft=CAPL-6073 rule return fields
Esta issue foi automaticamente movimentada para QA REVIEW, pois o PR foi aprovado no Github.
validado pelo time de QA. Pendente apenas o code review
Mensagem enviada pelo Slack - plataforma-carol-internal - Douglas Coimbra Lopes
Esta issue foi automaticamente movimentada para REVIEW, pois o PR (não DRAFT e não WIP) foi criado no Github.
feat: https://totvsideia.atlassian.net/browse/CAPL-6073#icft=CAPL-6073 rule return fields
@MARCOS STUMPF ,
@Robson Thanael Poffo ,
@Geny Isam Hamud Herrera ,
Este issue foi planejada para ser entregue até 2024-06-28. Você pode confirmar consultando o campo Due Date desta issue.
Data já planejadas para esta issue: 2024-06-28
Se o campo External Issue Link estiver preenchido com o link de uma issue válida no Jira Produção o cliente também será notificado no Jira Produção.