Medien löschen hinter Web Application Firewalls blockiert (Pfad enthält /delete)
評価
調査の方向性
Issueでは、既存のルート media/{filename}/delete と Media::handleDeleteMedia を示し、同じトークンスコープ media/delete で DELETE media/{filename} を追加することを提案しています。まず現在のルート定義とそのバックエンド版を読み、その後、既存の API ルートがどのようにテストされているかを確認してください。新しいルートが既存のスコープで同じハンドラーに到達し、古いルートも引き続き利用できれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Problem
Web Application Firewalls blockieren Pfade, die /delete enthalten. Das Löschen von Medien über die API ist dahinter nicht möglich: Die Anfrage kommt gar nicht bei REDAXO an.
Beobachtet auf einer Website hinter Imperva/Incapsula (Response-Header X-Iinfo, Cookies incap_ses_*). Die Firewall antwortet mit einer eigenen HTML-Seite und 403. In MediaPlace erscheint deshalb die irreführende Meldung „keine Berechtigung … nur in zugewiesenen Kategorien“, auch für Admins.
Nachweis (unangemeldet, auf eine nicht vorhandene Datei, aus einem Browser-Kontext)
| Anfrage | Antwort |
|---|---|
DELETE /api/backend/media/x.svg/delete |
403 (Firewall, HTML) |
DELETE /api/backend/media/x.jpg/delete, x.pdf, ohne Endung |
403 (Firewall) |
PUT / PATCH / POST …/x.svg/delete |
403 (Firewall) |
DELETE /api/backend/media/category/999999/delete |
403 (Firewall) |
DELETE /api/backend/structure/articles/999999999 |
401 JSON (kommt bei REDAXO an) |
DELETE /api/backend/media/category/999999 |
401 JSON (kommt an) |
PUT /api/backend/media/x.svg/update |
401 JSON (kommt an) |
DELETE /api/backend/media/x.svg/remove |
404 JSON (kommt an) |
Die Firewall reagiert also auf das Wort delete im Pfad, nicht auf die Methode DELETE.
Betroffen
Nur eine Route verwendet /delete im Pfad: media/{filename}/delete (Scope media/delete, auch als Backend-Variante backend/media/{filename}/delete). Alle anderen Lösch-Routen sind bereits REST-üblich, z. B. DELETE media/category/{id}.
Vorschlag
Eine zusätzliche, REST-übliche Route DELETE media/{filename}:
- gleicher Controller (
Media::handleDeleteMedia), - gleicher Token-Scope
media/delete(übernew BearerAuth(true, 'media/delete')). In der Token-Verwaltung erscheint so keine neue Checkbox, bestehende Tokens funktionieren sofort. - Die Backend-Variante entsteht automatisch über
Backend\Media. - Die alte Route bleibt erhalten (keine Breaking Changes).
Clients wie MediaPlace nutzen dann die neue Route und fallen bei älteren API-Versionen (404 „Route not found“) auf die alte zurück.
- 主要言語
- PHP
- スター
- 20
- フォーク
- 0
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
FriendsOfREDAXO/api のほかの issue
-
難易度 3/5 1〜2日 初心者へのやさしさ 65/100
FriendsOfREDAXO/api#83 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
FriendsOfREDAXO/api#81 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 55/100
FriendsOfREDAXO/api#80 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 55/100
FriendsOfREDAXO/api#65 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
FriendsOfREDAXO/api#62 ·
FriendsOfREDAXO/api の issue をすべて見る
似ている issue
-
needs-triage Technical TODO
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 2 日以内に返信
-
question
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
PrivateBin/docker-nginx-fpm-alpine#264 · コメント 1 件 ·
-
Fix test suite isolation by cleaning up registered theme directories and cache in teardown対応中かも @CookieDarb が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
WordPress/create-block-theme#895 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 64/100
Piwigo/piwigo-docker#19 · リアクション 1 件 ·
-
[Store][SurrealDb] add(), query() and remove() fail with 403 on a fresh store instance対応中かも @lazerg が今日担当しました。 オープンBug Status: Needs Review Store
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信