Home / Knowledge hub / Broken object property level authorisation
Knowledge hub
Broken object property level authorisation
Seeing or changing single fields of a record that you should not.
What it means
Broken object property level authorisation, or BOPLA, is when an API correctly lets you reach a record but does not check which fields of it you may read or change. You may see your own order, but not the internal cost field, and you may edit your address, but not your price tier.
It is number three in the OWASP API Security Top 10 for 2023. It joins two older entries: excessive data exposure on the reading side and mass assignment on the writing side. Both sides have the same cause: the API trusts the shape of the record, not the person asking.
Why it matters
The record check passes, so ordinary testing says access control is working. Yet a customer can read another field they should not, such as a hidden flag or someone's personal details, or can write one, such as their own role or balance.
Writes cause the worst cases. Sending an extra field like isAdmin or credit in a request can change data the form never offered. Reads cause quiet leaks of personal data through fields that the interface hid but the API still sent.
How it shows up
You meet it in APIs that convert whole database records to responses and requests straight into records, often through automatic mapping in a framework. Look at what the response contains compared with what the screen shows, and at which fields a request can set that the form did not include. Related checks sit under object-level authorisation.
The fix is explicit: define which fields each role may read and which it may write, and use separate input and output shapes instead of the database model. Test with extra fields, with fields of other roles, and with a lower-privilege account against the same record.
Questions people ask
Broken object property level authorisation, answered
How is BOPLA different from BOLA?
BOLA is about reaching a record that belongs to someone else. BOPLA is about the fields inside a record you may legitimately reach. Both need testing.
How does it relate to mass assignment?
Mass assignment is the write side of it: a request sets fields the user should not control. OWASP merged it with excessive data exposure to form BOPLA in 2023.
Can the front end hide fields instead?
No. Hiding a field in the interface does not stop the API sending it or accepting it. Anyone using the API directly sees the full request and response.
How do we test for it?
Compare API responses with what the screen shows, add unexpected fields to update requests, and repeat with accounts of different roles. Check the stored record afterwards.
What is the fix?
Use explicit allowlists of fields per role for reading and writing, with separate data shapes for input and output, and keep checks on the server.
Related
Terms that sit next to this one
Mass assignment
When the fields in a request get written straight onto a record.
Excessive data exposure
An API sends whole records and trusts the page to show only the safe fields.
BOLA
An API returns a record just because you asked for it by number.
Object-level authorisation
Checking access to each individual record, not only to the type of record.
OWASP API Security Top 10
The OWASP list of the most serious risks specific to APIs.
Which fields can you reach?
Field-level access is tested on the running app by comparing what each signed-in account can read and set, and each finding carries the request and response that proved it. Ask us to run it on one of your applications.
Or start with a $199 pilot on one application: thirty days, success criteria agreed before day one, credited against the annual if you convert.