Skip to content

fix(api): запретить подделку privacy_accepted_at через customer/add#439

Open
Ibochkarev wants to merge 1 commit into
betafrom
fix/issue-413-privacy-accepted-at-forbidden
Open

fix(api): запретить подделку privacy_accepted_at через customer/add#439
Ibochkarev wants to merge 1 commit into
betafrom
fix/issue-413-privacy-accepted-at-forbidden

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

POST /api/v1/customer/add писал любое поле из fieldMeta, кроме denylist. В списке был privacy_ip, но не privacy_accepted_at — авторизованный покупатель мог проставить GDPR-метку согласия без register/consent flow.

privacy_accepted_at добавлен в PROFILE_QUICK_UPDATE_FORBIDDEN. Легитимный consent по-прежнему только в RegisterService (серверный timestamp + IP).

Тип изменений

  • Исправление бага (non-breaking change)
  • Новая функциональность (non-breaking change)
  • Breaking change (изменение, ломающее обратную совместимость)
  • Рефакторинг (без изменения функциональности)
  • Документация
  • Другое (опишите):

Связанные Issues

Closes #413

Как это было протестировано?

cd core/components/minishop3
composer ci:php   # exit 0
phpcs --standard=PSR12 tests/ProfileQuickUpdateForbiddenTest.php  # exit 0
# red-green: убрать privacy_accepted_at из константы → test exit 1; откат → exit 0
  • Ручное тестирование
  • Автоматические тесты (composer ci:php)
  • Тестирование на разных версиях PHP/MODX

Конфигурация тестирования:

  • MiniShop3: fix/issue-413-privacy-accepted-at-forbidden
  • MODX: n/a (static smoke)
  • PHP: 8.2+

Скриншоты (если применимо)

До После
n/a n/a

Чеклист

  • Код соответствует стилю проекта
  • Добавлены/обновлены комментарии в сложных местах
  • Изменения не ломают существующую функциональность
  • Лексиконы — не требуется
  • PHPStan — не в CI
  • ESLint — Vue не меняли
  • CHANGELOG — не для этого PR

Дополнительные заметки

@Ibochkarev Ibochkarev added priority: medium Средний приоритет bug Something isn't working labels Jul 23, 2026
@Ibochkarev
Ibochkarev requested a review from biz87 July 23, 2026 16:47
GDPR consent timestamp must only be set server-side during register.
customer/add already forbade privacy_ip but still allowed forging
privacy_accepted_at via fieldMeta.
@Ibochkarev
Ibochkarev force-pushed the fix/issue-413-privacy-accepted-at-forbidden branch from bca93f2 to b7d9698 Compare July 24, 2026 02:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working priority: medium Средний приоритет

Projects

None yet

Development

Successfully merging this pull request may close these issues.

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

1 participant