Impact
File downloads via HTTP Range requests bypass the afterFind(Parse.File) trigger and its validators on storage adapters that support streaming (e.g. the default GridFS adapter). This allows access to files that should be protected by afterFind trigger authorization logic or built-in validators such as requireUser.
Patches
The streaming file download path now executes the afterFind(Parse.File) trigger before sending any data. Authentication is resolved from the session token header so that trigger validators can distinguish authenticated from unauthenticated requests.
Workarounds
Use beforeFind(Parse.File) instead of afterFind(Parse.File) for file access authorization. The beforeFind trigger runs on all download paths including streaming.
References
Impact
File downloads via HTTP Range requests bypass the
afterFind(Parse.File)trigger and its validators on storage adapters that support streaming (e.g. the default GridFS adapter). This allows access to files that should be protected byafterFindtrigger authorization logic or built-in validators such asrequireUser.Patches
The streaming file download path now executes the
afterFind(Parse.File)trigger before sending any data. Authentication is resolved from the session token header so that trigger validators can distinguish authenticated from unauthenticated requests.Workarounds
Use
beforeFind(Parse.File)instead ofafterFind(Parse.File)for file access authorization. ThebeforeFindtrigger runs on all download paths including streaming.References