OWASP Top 10:2025 #1 Security Risk
Access control enforces policy such that users cannot act outside of their intended permissions. When these controls fail, it leads to unauthorized information disclosure, modification or destruction of data, or performing business functions outside the user's limits.
This category has the highest number of occurrences in contributed data and the second-highest number of related CVEs with over 32,000 vulnerabilities documented.

Access granted to anyone instead of specific capabilities, roles, or users (deny by default principle violated).
Bypassing access checks by modifying URLs, parameters, internal state, or using attack tools to modify API requests.
Viewing or editing someone else's account by providing their unique identifier without proper authorization.
APIs lacking access controls for POST, PUT, and DELETE operations, allowing unauthorized data manipulation.
Acting as a user without authentication or gaining privileges beyond expected (e.g., admin access).
Replaying or tampering with JWT tokens, cookies, or hidden fields to elevate privileges or abuse invalidation.

Application uses unverified data in SQL queries:
pstmt.setString(1, request.getParameter('acct'));Attacker modifies the 'acct' parameter in the URL to access any user's account without verification.
Attacker directly accesses admin URLs:
https://example.com/app/admin_getappInfoIf unauthenticated users or non-admins can access admin pages, it's a critical flaw.
Access control implemented only in JavaScript:
$ curl https://example.com/app/admin_getappInfoAttackers bypass frontend restrictions using command-line tools to access protected endpoints directly.
Access control is only effective when implemented in trusted server-side code or serverless APIs, where attackers cannot modify the access control check or metadata.
Deny by default - except for public resources
Implement access controls once and reuse throughout the application
Enforce record ownership rather than allowing CRUD on any record
Disable web server directory listing and remove metadata files
Log access control failures and alert admins appropriately
Implement rate limits on API and controller access
Invalidate session identifiers on logout; use short-lived JWT tokens


Always implement access controls in trusted server-side code or serverless APIs where attackers cannot modify checks.
Include functional access control unit and integration tests in your development workflow.
Leverage well-tested toolkits or frameworks that provide simple, declarative access controls.
Carefully configure Cross-Origin Resource Sharing to prevent unauthorized API access from untrusted origins.