Skip to content

fix(customer): stop checkout token takeover via email#391

Open
Ibochkarev wants to merge 1 commit into
betafrom
fix/369-checkout-customer-token-takeover
Open

fix(customer): stop checkout token takeover via email#391
Ibochkarev wants to merge 1 commit into
betafrom
fix/369-checkout-customer-token-takeover

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

Гость на checkout с email существующего покупателя больше не переписывает msCustomer.token и не получает auto-login. Заказ по-прежнему может привязаться к customer_id по email; сессия жертвы не передаётся.

Убраны оба пути: в getOrCreate() и в createFromOrderData() после неудачной auto-регистрации.

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

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

Связанные Issues

Closes #369

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

  • Ручное тестирование
  • Автоматические тесты (PHPStan, ESLint)
  • Тестирование на разных версиях PHP/MODX

php -l на Customer.php. Сценарий из issue (guest checkout → victim email → проверка token) в этой сессии не гонял на живом MODX.

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

  • MiniShop3: ветка fix/369-checkout-customer-token-takeover
  • MODX: —
  • PHP: локальный php -l

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

До После

Чеклист

  • Код соответствует стилю проекта
  • Добавлены/обновлены комментарии в сложных местах
  • Изменения не ломают существующую функциональность
  • Лексиконы добавлены на двух языках (ru/en)
  • PHPStan проходит без новых ошибок
  • ESLint проходит без ошибок (для JS/Vue изменений)
  • Обновлён CHANGELOG.md (для значимых изменений)

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

Severity: critical authz. После merge: инкогнито → cart → checkout с email существующего клиента → у жертвы token не меняется; у атакующего нет customer_id/cookie жертвы. Auto-login по-прежнему только для нового customer при ms3_customer_auto_login_on_order.

When a guest checkout matches an existing msCustomer by email, attach
the order only — do not overwrite token or auto-login the attacker.
@Ibochkarev Ibochkarev changed the title fix(customer): stop checkout token takeover via email (#369) fix(customer): stop checkout token takeover via email Jul 16, 2026
@Ibochkarev Ibochkarev added priority: critical Блокирует работу, требует немедленного исправления bug Something isn't working and removed priority: critical Блокирует работу, требует немедленного исправления labels Jul 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Checkout: захват msCustomer — token чужого аккаунта по email

1 participant