Skip to content

fix(web-api): hardening rate-limit, CORS wildcards, query tokens - #584

Open
Ibochkarev wants to merge 1 commit into
betafrom
fix/issue-576-web-api-security-hardening
Open

fix(web-api): hardening rate-limit, CORS wildcards, query tokens#584
Ibochkarev wants to merge 1 commit into
betafrom
fix/issue-576-web-api-security-hardening

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

Закрывает три находки security-аудита Web API (#576):

  1. RateLimitMiddleware — ключ только REMOTE_ADDR (без client-controlled HTTP_MS3TOKEN).
  2. CORS — wildcard через preg_quote + *[^.]+ (одна DNS-метка), без «голых» точек в regex.
  3. TokenMiddleware — session token только Bearer / MS3TOKEN / cookie / session; query ms3_token снимается и не является credential.

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

  • Исправление бага (non-breaking change)
  • Breaking change (частично: query ?ms3_token= больше не авторизует)

Связанные Issues

Closes #576

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

cd core/components/minishop3
composer ci:php   # exit 0
composer stan     # exit 0
./vendor/bin/phpunit tests/Unit/Middleware/RateLimitMiddlewareTest.php
php tests/CorsConfigNormalizeTest.php
php tests/TokenMiddlewareQueryTokenTest.php
  • Автоматические тесты
  • Ручное тестирование против live MODX

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

  • MiniShop3: fix/issue-576-web-api-security-hardening
  • PHP: 8.4

Чеклист

  • Код соответствует стилю проекта
  • PHPStan без новых ошибок
  • Лексиконы не требовались
  • CHANGELOG.md — на релизе

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

Ключ rate limit только по IP, CORS-паттерны через preg_quote и одну
DNS-метку, session token не принимается из query string.
@Ibochkarev Ibochkarev added priority: high Важно исправить в ближайшее время bug Something isn't working labels Aug 16, 2026
@Ibochkarev
Ibochkarev requested a review from biz87 August 16, 2026 09:33
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: high Важно исправить в ближайшее время

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Web API: hardening rate-limit key, CORS wildcard match, token in query

1 participant