One of the main problems of modern applications and APIs remains the IDOR vulnerability, which allows attackers to manipulate identifiers and gain access to other people's data. Such attacks remain one of the causes of massive personal data leaks, can lead to modification and deletion of objects, as well as other negative consequences.
Even though developers are well aware of the problem of such attacks, IDOR still regularly appears in products: some checks are forgotten, others are postponed due to architectural complexity and deadlines. It is worth discussing in more detail how attacks occur, what adverse consequences they can entail, and how to protect against the actions of attackers.
What Is IDOR and the Essence of the Problem
The term IDOR (Insecure Direct Object Reference) refers to a vulnerability in web applications and their interfaces that arises due to insufficient checking of access rights to data objects. This development flaw makes it possible to access objects through their identifiers if the server does not check whether the current user has the right to work with a specific object.
Attackers can use database keys, gain access to file names, and when attacking an online store, use order numbers for their own purposes and modify them. They perform their actions on behalf of other users or within their own account, which complicates the process of tracking attacks and timely blocking.
The vulnerability occurs if the application interface allows the use of an identifier for direct access to objects, and the user's rights to work with this object are not checked. Such attacks become possible if the application lacks object-level authorization checking, allows the use of predictable identifiers, or has an incorrect implementation of data access. IDOR can hide in the address bar, request parameters, hidden form fields, data export functions; the problem is especially common on multi-user platforms.
Why IDOR Is So Dangerous
The negative consequences of the vulnerability are individual for each application, depending on its purpose and interface features. The most common problem that unites all vulnerable web applications and APIs is data leakage. Attacks are easily automated, allowing mass data collection. Subsequently, the attacker can use the obtained data for intended purposes: reading, further use, substitution, or deletion. Among other dangers posed by IDOR:
- data modification (modification, deletion, publication of records);
- access to other user resources that have the same level of rights;
- gaining access to files and attachments via direct links or identifiers if additional rights checking is not configured for them;
- disclosure of confidential data;
- gaining access to administrative objects.
Such adverse consequences lead to violation of system integrity, operational errors, and can entail financial, legal, and reputational risks for companies. The danger for SaaS and multi-tenant systems should be noted separately: for them, IDOR threatens mass data collection, modifications, and violation of isolation between clients.
Where IDOR Typically Occurs
The most common location for IDOR is in URL path parameters that reflect the user identifier. Attackers use query string parameters for attacks, as well as request body fields, including API requests and JSON.
If an application allows access to files by name or ID and access to them is not controlled, IDOR can occur in files and paths to them. In this case, the attacker can gain access to files for reading, and if vulnerable operations exist, modify their content. Hidden form fields, through which user identifiers can also be transmitted, should be highlighted as a vulnerable spot.
IDOR often occurs in background and mass operations, exports, service handlers, and admin panels, which are easy to automate. The vulnerability can also be found in mobile clients or SPAs: important objects are accessible via API, and identifiers are transmitted on the client side.
The infrastructure itself does not cause IDOR: the vulnerability appears at the application and API logic level. Therefore, this risk should be sought not only in public pages, but also in service handlers, exports, mobile clients, and internal scenarios.
How the Attack Works: Step by Step
To better understand the mechanism that allows attackers to manipulate identifiers, it is worth considering the step-by-step attack algorithm:
- The attacker conducts system research, studies the operation of the web application, and evaluates the specifics of its interface. The main objects of study are the requests sent by the application. Browser developer tools or traffic interception tools can be used for this.
- Once the application for attack is selected, the attacker performs identifier substitution. They choose where the identifier is transmitted: request body, URL, headers, and other parameters.
- When a vulnerable point is found, identifier substitution testing is performed. The attacker can change it manually or using scripts; this tests access control.
- If the server is vulnerable, after successful testing, the attacker gains access to confidential data. They can read and modify personal information, financial data of other users, and in some cases, elevate their privileges and gain access to administrator tools.
- If a single attack is successful, the attacker may proceed to mass data collection.
Some additional techniques may also be used in the attack: manipulating ID parameters in URLs, values in JSON, hidden form fields, checking files and attachments via direct links, as well as token prediction.
Typical Examples of IDOR in Real Products
To better understand the negative consequences of IDOR for web applications, it is worth considering several examples for specific platforms.
Online Store
Disclosure of user confidential data, gaining access to their payment information, orders, delivery addresses. Data modification, execution of unauthorized operations (purchasing on behalf of a user, using their payment details, correcting delivery addresses).
SaaS Service
Mass collection of data on other people's orders, invoices, company settings, user roles, medical and other legal documents, personal information. Modification and corruption of requests that form business processes, further use of collected personal data for fraudulent purposes.
CRM/Helpdesk
Gaining access to other people's correspondence, user personal data, financial information. Changing the status of a request or rejecting it, substituting the content of documents used by the application. Such data modification can lead to violation of the integrity of the entire system and large-scale operational failures.
Documents and Attachments
Access to other users' documents, correction of their content. Changing the text of reports, contracts, statistical information, attachments with user personal data. Using documents with incorrect information can lead to application errors and data disputes.
Internal Panels
Gaining access to internal company materials, confidential information. Substituting document content, changing the status of requests and current work operations, falsifying financial information and user personal data. Compromise of accounts of ordinary users, company employees, and partners.
It is important to note that similar risks may occur in messengers, corporate chats, online stores, and internal services if files, correspondence, or attachments are accessible via direct identifiers without rights checking. Hacking one service and leaking personal data may lead to loss of control over other applications.
Why Developers Allow IDOR
Most developers are well aware of the vulnerability and the algorithms used by attackers, but IDOR still appears in real projects due to architectural assumptions, incomplete rights checks, and insufficient testing. Several reasons why web resource developers allow IDOR:
- technical difficulties associated with a large number of transmitted identifiers;
- unwillingness to change the approach to application architecture;
- complexity of role models, which makes configuring access rights difficult;
- occurrence of errors in request processing due to additional access checks;
- false sense of security, underestimation of risks.
At the application development stage, not all creators correctly assess the real threat of malicious attacks. They may not pay enough attention to security at the initial stage of project creation, postpone risk assessment or solving complex technical problems.
How to Protect Against IDOR
There are several options for technical measures to protect against IDOR; specific ones should be selected according to the type of application and the features of its interface. The main measure is to check user rights for each object on the server side: when reading, modifying, deleting, exporting, and downloading. Additionally, strict access control and session management can be implemented, direct links to objects can be avoided, and more complex identifiers can be used.
Validation and sanitization of input data, monitoring and logging of suspicious activity yield good results. However, complex identifiers, UUIDs, and tokens do not replace rights checking, but only complement it. During development, it is important to conduct manual security testing, not neglect automated testing, and regularly conduct security audits.
Reliable hosting is also important, but its role should be assessed correctly. It does not fix IDOR in the application code, but with VPS you can create a more secure environment: separate production and staging, configure logs and backups, ensure service isolation, and safely test fixes before deployment.
How to Test an Application for IDOR
The basic testing scenario should be conducted in a test environment or with the application owner's permission: create two accounts with different objects, then check whether one user can access another's data via URL, API, files, export, or form.
To assess an application's resistance to IDOR, several testing techniques can be used:
- Parameter manipulation. This test involves brute-forcing numeric identifiers, using data arrays and boolean values, and testing with wildcards.
- Identifier brute-forcing. Testing is relevant even if the application uses unpredictable identifiers. API responses, JavaScript files, or time-based prediction algorithms are used for brute-forcing.
- Replacing keywords with numeric identifiers. This test can be used if the application parameters use words like "me", "current", "self", and others.
- Identifier leak analysis. This requires scanning public profiles, password reset forms, links intended for sharing, as well as messages within the application.
- Changing the HTTP method. This tool allows adjusting request processing and consequently identifying vulnerabilities.
Messengers, online stores, and corporate applications can use these and many other techniques to assess resilience.
Conclusion
The vulnerability associated with the lack of access control to objects remains a common problem in modern web applications and APIs. Sometimes IDOR occurs due to technical difficulties, lack of time, complex architecture, or a false assessment of resource security. Server-side rights checking for each object, regular auditing, and testing the application for potential vulnerabilities help increase security. Reliable hosting does not eliminate IDOR by itself, but helps build a secure environment: staging, logs, backups, and service isolation.

