Skip to content

[Bug] Web API: customer/add позволяет подделать privacy_accepted_at #413

Description

@Ibochkarev

Описание проблемы

POST /api/v1/customer/add пишет любое поле из fieldMeta модели, кроме blacklist PROFILE_QUICK_UPDATE_FORBIDDEN. В blacklist нет privacy_accepted_at — клиент может проставить timestamp GDPR-согласия без UI-согласия.

Шаги воспроизведения

  1. Авторизованный покупатель.
  2. POST /api/v1/customer/add с телом {"key":"privacy_accepted_at","value":"2026-01-01 00:00:00"}.
  3. Поле сохраняется на msCustomer.

Ожидаемое поведение

Consent-поля (privacy_accepted_at, и аналоги) либо в forbidden, либо только через явный register/consent endpoint.

Фактическое поведение

// CustomerProfileController.php PROFILE_QUICK_UPDATE_FORBIDDEN
// есть privacy_ip, нет privacy_accepted_at
// updateField пишет любой ключ из fieldMeta

Окружение

  • MiniShop3: beta / REST API
  • MODX: 3.x
  • PHP: 8.2+

Дополнительный контекст

Лучше allowlist редактируемых полей, а не «весь fieldMeta минус blacklist».

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingpriority: mediumСредний приоритет

    Type

    No type

    Fields

    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