checkMediaPerm(): Ziel nicht geprüft bei Verschieben + keine Kaskadierung auf Unterkategorien
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 55/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- php
- Lĩnh vực
- api, authorization, backend, security
Hướng nghiên cứu
Bắt đầu trong lib/RoutePackage/Media.php với checkMediaPerm(), hasCategoryPerm(), handleUpdateMedia(), handleUpdateCategory() và handleDeleteCategory(). So sánh các kiểm tra danh mục nguồn với redaxo/src/addons/mediapool/pages/media.list.php dòng 46-50. Được xem là hoàn tất khi các thao tác di chuyển kiểm tra cả nguồn và đích, tùy chọn permitted_only có thể kiểm tra các danh mục tổ tiên mà không thay đổi hành vi mặc định, và các đường dẫn quyền bị ảnh hưởng vẫn được bảo vệ.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
checkMediaPerm() in Media.php prüft bei Verschiebe-artigen Operationen nur die Quelle, nicht das Ziel. handleUpdateCategory() und handleDeleteCategory() prüfen Zugriff auf die zu ändernde Kategorie selbst (checkMediaPerm($user, $Category->getId()), Z. 1132 bzw. Z. 1100) statt auf deren Elternkategorie, wodurch eine zugewiesene Ordnergrenze durch den betroffenen User selbst aufgelöst werden kann. handleUpdateMedia() prüft beim Verschieben einer Datei nur die alte Kategorie (Z. 891), nicht die neue category_id aus dem Body (Z. 912 bzw. Z. 940), wodurch eine Datei in jede beliebige fremde Kategorie verschoben werden kann.
Lösungsvorschlag: Bei Operationen, die category_id/parent_id ändern, zusätzlich zur Quelle auch die Zielkategorie prüfen.
Zusätzlich prüft hasCategoryPerm($categoryId) immer nur exakten Treffer, nie Vorfahren. Sobald Zugriff auf eine Kategorie auch für ihren Unterbaum gelten soll, führt das dazu, dass Lesen/Hochladen/Löschen/Verschieben in einer Unterkategorie einer freigegebenen Kategorie mit 403 fehlschlägt. Betrifft Liste, Upload, Löschen, Get/Get-File, Update.
Lösungsvorschlag: Den bestehenden permitted_only-Opt-in um eine kaskadierende Prüfung erweitern – bei gesetztem Flag zusätzlich zum exakten Treffer die Vorfahrenkette prüfen (rex_media_category::getPath(), pro Vorfahre hasCategoryPerm()). Ändert nichts am Default-Verhalten.
Der klassische Medienpool hatte dieselbe Fehlerklasse (spiegelbildlich: updatecat_selectedmedia prüfte nur die Ziel-Kategorie, nicht die Quell-Kategorie jeder ausgewählten Datei), das ist im Core aber inzwischen behoben – die Quell-Kategorie wird pro Datei geprüft, siehe Z. 46-50. Guter Referenzpunkt für den Fix hier.
- Ngôn ngữ chính
- PHP
- Star
- 20
- Fork
- 0
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của FriendsOfREDAXO/api
-
Medien löschen hinter Web Application Firewalls blockiert (Pfad enthält /delete)Có thể đã có người làm @skerbis đã nhận 4 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
FriendsOfREDAXO/api#84 ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 65/100
FriendsOfREDAXO/api#83 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
FriendsOfREDAXO/api#81 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 55/100
FriendsOfREDAXO/api#65 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
FriendsOfREDAXO/api#62 ·
Tất cả issue của FriendsOfREDAXO/api
Issue tương tự
-
0.kind: enhancement 9.needs: package (update)
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 67/100
NixOS/nixpkgs#577156 · 3 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
tine-groupware/tine#277 ·
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
MagnaCapax/PMSS#1142 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Native-arrow select renders a second Jetpack chevronCó thể làm lại được Pull request cho issue này đã bị đóng mà không được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Automattic/static-site-importer#2294 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug 🐛
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
netalertx/NetAlertX#1856 · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày