Glossário

O que é IDOR: uma falha que expõe os dados de outras pessoas quando um ID é trocado

O IDOR permite trocar um ID na URL e ver dados de outra pessoa. Como funciona e a defesa: verificar no servidor a permissão sobre cada objeto.

Publicado 2026-06-10 Atualizado 2026-10-06 7 min de leitura
Nesta página

IDOR (controle de acesso quebrado) é quando trocar id=124 por 125 numa URL mostra a fatura de outra pessoa. Veja como funciona e como preveni-lo de forma confiável (sem passos de ataque).

Por que acontece

A autenticação (quem você é) passa, mas a autorização (você pode fazer isto?) está ausente. Autenticação e autorização são coisas diferentes — conseguir logar não significa ter permissão para ver aqueles dados.

Brecha comumResultado
Confiar no ID como está depois do loginTroque pelo ID de outro usuário e o acesso funciona
Erro do "não mostrado na interface = seguro"Chamar a API diretamente não é bloqueado
Sem verificação de permissão em criar/atualizar/excluirNão só visualizar — adulteração e exclusão também

Por que funciona

Usuário A faz login → sua fatura /invoice?id=124
troca o id por 125 (do Usuário B)
↓ o servidor só verifica "125 existe"
sem verificação de posse, então a fatura do B é exibida
Verifique só a 'forma' do ID sem confirmar a posse, e trocar seu ID pelo de outra pessoa simplesmente funciona.

IDs não aparecem só como ?id= numa URL. Caminhos de API (/api/orders/125), corpos JSON ("userId": 125), URLs de download de arquivos e campos ocultos de formulário precisam da mesma verificação — em qualquer lugar onde um valor enviado pelo usuário escolhe sobre qual objeto agir.

Termos relacionados

O IDOR é uma forma de controle de acesso quebrado. Ele tem vários nomes e é fácil de confundir com seus vizinhos.

TermoO que faltaExemplo
IDORVerificação de posse/permissão por objetoO usuário A troca um ID e vê a fatura do usuário B
BOLAO mesmo que IDOR (nome usado pelo OWASP API Security)/orders/{id} numa API devolve o pedido de outra pessoa
Falha de autorização por funçãoVerificação de permissão por funçãoUm usuário comum consegue chamar uma API só para administradores
Autenticação quebradaA própria verificação de "quem é você"A API pode ser chamada sem login

No OWASP Top 10, o Controle de Acesso Quebrado (A01) está em primeiro lugar na edição de 2025, como em 2021. No OWASP API Security Top 10 (2023), focado em APIs, o BOLA também é o primeiro (API1:2023).

Casos reais: dados de outras pessoas visíveis após o login

Dois casos do setor público que este site cobriu foram atribuídos oficialmente a defeitos introduzidos em atualizações de sistema, mas o resultado teve a mesma forma de uma falha de autorização: um usuário logado conseguia alcançar dados que não eram seus.

  • Companies House, do Reino Unido (março de 2026): usuários logados no WebFiling podiam, por certas ações, potencialmente ver endereços residenciais de diretores de outras empresas e outros dados, e registros não autorizados eram tecnicamente possíveis. O órgão diz que foi um defeito introduzido numa atualização de sistema de outubro de 2025, não um ataque externo → análise completa (em inglês)
  • e-Tax da Agência Nacional de Impostos do Japão (setembro de 2026): um defeito de uma atualização da página "My Page" permitiu que outros usuários vissem declarações de imposto sobre doações e documentos relacionados de 79 pessoas → análise completa (em inglês)

Nos dois casos, a verificação de login funcionava. O que faltava era "este usuário pode agir sobre este objeto?". E ambos aconteceram depois de uma mudança. Mesmo um sistema correto pode perder a verificação quando um recurso é adicionado, e por isso vale ter um teste automatizado que rode sempre.

Defesa: verifique posse/permissão no servidor, sempre

1

Verifique posse/permissão por objeto (o mais importante)

Logo antes de retornar ou modificar dados, verifique no servidor que o usuário logado possui ou tem permissão sobre aquele objeto. Negue se não.

2

Negue por padrão

Novos endpoints partem de "negar tudo, exceto o que é explicitamente permitido", para que uma verificação esquecida falhe fechada, não aberta.

3

Consulte apenas as linhas 'suas'

Embuta a condição de posse na própria consulta (por exemplo, filtre pelo id do usuário atual). Roteie tudo por um único helper de autorização compartilhado para que nenhum ponto de chamada o esqueça.

4

Não confunda controle de interface com defesa

Ocultar um botão é UX, não segurança. Suponha que a API é chamada diretamente e decida apenas no servidor. Mantenha IDs aleatórios como auxílio, não como o controle.

Como verificar o seu próprio app

Faça isto apenas num app que você desenvolve ou administra. Tentar no serviço de outra pessoa pode ser acesso não autorizado.

  1. Crie os usuários de teste A e B e dê a cada um um registro (um pedido, um arquivo etc.)
  2. Logado como A, chame as APIs de visualizar, atualizar e excluir com um ID que aponte para o registro de B. Chame a API diretamente pelas ferramentas de desenvolvedor ou por um cliente de API, não pela interface
  3. Confirme que todas as requisições são recusadas com 403 ou 404. Verifique também que os endpoints de listagem não incluem registros de B
  4. Transforme isso num teste automatizado e adicione o mesmo teste sempre que criar um endpoint

O OWASP API Security Top 10 também recomenda escrever testes que avaliem o mecanismo de autorização e não publicar mudanças que façam esses testes falharem.

A visão deste site: fácil de passar despercebido, mas de alto impacto, então verifique com testes automatizados

O IDOR é tecnicamente sem graça e facilmente esquecido em revisão de código, mas o impacto é grave ("um clique revela os dados pessoais de todos"). Então o movimento prático é adicionar um teste automatizado: como outro usuário, solicitar o ID de outra pessoa deve retornar 403. O princípio deste site é "nunca defender na interface do cliente; decidir apenas no servidor". A autorização deve ser imposta por um mecanismo a cada requisição — nunca deixada à atenção humana.

Fontes (primárias)

  • OWASP Top 10:2025, "A01 Broken Access Control" — top10.owasp.org (em inglês; classificação; o exemplo de referências diretas inseguras a objetos)
  • OWASP API Security Top 10 2023, "API1:2023 Broken Object Level Authorization" — api-security.owasp.org (em inglês; prevenção; recomendação de testes)
  • MITRE CWE-639: Authorization Bypass Through User-Controlled Key — cwe.mitre.org (em inglês)
  • As fontes dos dois casos (comunicados da Companies House e da Agência Nacional de Impostos) estão listadas em cada análise

Leia a seguir

Classificação

O CWE classifica os tipos de fraqueza por trás das vulnerabilidades; o MITRE ATT&CK classifica as técnicas dos atacantes. Ambos são mantidos pela MITRE e amplamente usados para rotular vulnerabilidades e regras de detecção.

CWE™: Copyright © 2006–2026, The MITRE Corporation. CWE is a trademark of The MITRE Corporation. The MITRE Corporation hereby grants you a non-exclusive, royalty-free license to use CWE for research, development, and commercial purposes. Any copy you make for such purposes is authorized on the condition that you reproduce MITRE’s copyright designation and this license in any such copy. CWE Terms of Use

FAQ

QO que acontece com o IDOR?
A

Um usuário logado troca um ID numa URL ou API (?id=124 por outro valor) e visualiza, edita ou apaga a fatura, o pedido, os dados pessoais ou os arquivos de outra pessoa. É o exemplo típico da classe de problema mais comum (controle de acesso quebrado) e assusta porque não precisa de ferramentas especiais.

QQual é a principal defesa?
A

A cada requisição, no servidor, verifique 'ESTE usuário logado pode agir sobre ESTE objeto?'. Mesmo que o ID seja bem formado, verifique posse/permissão e negue se ausente (negar por padrão). Nunca confie em ocultar na interface do cliente.

QUUIDs ou IDs aleatórios previnem isso?
A

Eles só tornam os IDs mais difíceis de adivinhar; não são uma correção. Se um ID vazar ou for compartilhado, a requisição ainda funciona. Mantenha a aleatorização como auxílio; a defesa principal é sempre uma verificação de posse/permissão no servidor.

QQual é a diferença entre IDOR e BOLA?
A

Descrevem o mesmo problema. IDOR é o nome tradicional em aplicações web; BOLA (Broken Object Level Authorization) é o nome usado no OWASP API Security Top 10, onde aparece em primeiro lugar na edição de 2023 (API1:2023). Ambos significam que falta a verificação de autorização por objeto.

QComo testo o meu próprio app contra IDOR?
A

No seu próprio app, crie dois usuários de teste, A e B. Logado como A, peça os dados de B pelo ID para visualizar, atualizar e excluir, e confirme que todas as requisições são recusadas (403 ou 404). Chame a API diretamente em vez de passar pela interface, e mantenha essa verificação como teste automatizado.

QOnde o IDOR fica no OWASP Top 10?
A

Em A01, Controle de Acesso Quebrado (Broken Access Control). Ficou em primeiro lugar nas edições de 2021 e de 2025, e a OWASP cita como exemplo 'permitir ver ou editar a conta de outra pessoa fornecendo seu identificador único (referências diretas inseguras a objetos)'.