Skip to content

PII: search filters can infer masked values (and free-text PII) #666

@arturasmckwcz

Description

@arturasmckwcz

Follow-up from the GET PII-masking change.

Masking hides Person/Address in the response, but list endpoints filter on the unmasked DB columns (getAgentWhere street/search, getVolunteerWhere search, getOpportunityWhere, etc.). A non-privileged caller can therefore infer a hidden value by probing search patterns and seeing which (masked) rows match.

Also: PII embedded in free-text (e.g. legacy <|> contact comments, communication notes) isn't reached by entity-level masking.

Proposed: for non-privileged roles, scope/disable the searchable filters (or apply the same visibility scoping to the query WHERE), and consider redacting known free-text PII. // SECURITY: markers added at the filter sites.

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions