- Verschifft
- 23. September 2026 um 12:42 UTC
- Autor
- Kamo
- Ausschuss
- 19505fa
Jeder get/update/delete-by-uid-Handler unter CommerceMarketController-Einzelhandel Sub-Ressourcen (Kategorien, Marken, Attribute/Werte, Bilder, Varianten, Tags, Bewertungen, Kunden-Stufen, Steuerklassen/Zonen/Preise, Rabatte, Preis Listen/Einträge, Geschenkkarten, Standorte, Lagerbestände/Anpassungen, Versand Zonen/Methoden, Transportunternehmen, Sendungen, Karren/Karren, Auftragsentwurf, Bestellung Anmerkungen) löste die Zeile durch eine bloße findById(uid)/deleteById(uid), ohne überprüfen, ob die Zeile der Organisation des Anrufers gehört. Jede Authentifizierung Mitglied einer org könnte die Zeilen einer anderen Organisation lesen, bearbeiten oder löschen, indem Erraten oder Aufzählen einer uid - für Kunden (sequential Long ids) war dies ein PII Leck von Namen, E-Mail und verbringen; für Geschenkkarten, Lagerbestände und Warenkorb Summen war es schreiben Zugriff auf die Gelder und Inventar Zahlen eines anderen Mieters. getMarketVendors hatte die gleiche Lücke: seine POST/PUT/DELETE Geschwister bereits bereute den Markt über findBIdAndOrganizationId, aber die GET nicht. Behoben durch Einfädeln orgId in jede dieser Lookups: - Entitäten mit eigener Organisationssäule (die meisten von ihnen) lösen jetzt durch eine neue findByUidAndOrganizationId Repository-Methode, die die vorhanden ************ (eine explizite @Query, da das ID-Feld dieser Entitäten "uid" ist, nicht "id". - Entitäten ohne eigene Organisationssäule (Produktbilder/Varianten über ihr Produkt, Attributwerte über ihr Attribut, Warenkorb-Artikel über ihren Warenkorb, Preislisteneinträge über ihre Preisliste) werden durch eine neue ************ Abfrage, die sich dem Elternteil anschließt. - Eine Handvoll von erstellen-Zeit Fremdschlüssel wörtlich aus dem Antrag Körper genommen (eine Markt-ID, eine Elternkategorie-ID, eine Kunden-Tier-ID, eine Steuerzone/Klasse, ein Bild/variante Querverlinkung, der Frachtführer/Standort einer Sendung, ein Entwurf die gespeicherte Adresse der Bestellung) hat die gleiche org-scoped Lookup, Schließen der gleichen Klasse der Lücke zum Zeitpunkt der Schreibzeit, nicht nur bei der by-id read/update/löschte. - lookupMarket und die neue lookupOffering(id, orgId) Überlastung zentralisieren dies für jede erstellen Handler, die zuvor nannte sie unskopiert. - getMarketVendors löst jetzt seinen Markt über findByIdAndOrganizationId bevor sie Anbieter auflisten und mit ihren eigenen Geschwistern abgleichen. In jedem Fall antwortet eine ausländische-Org-Reihe jetzt genau wie eine fehlende: Ausnahme, gleiche Nachricht, gleiche HTTP-Antwort der Handler bereits für eine schlechte uid - keine neuen Informationen durch die Korrektur selbst durchgesickert. Massenzuordnung: updateGiftCard akzeptiert aktuelles Gleichgewicht von der Anfrage Körper. Keine bestehende RolleRightType (MANAGE_PRICING, MANAGE_ORDERS, ...) deckt eindeutig die manuelle Balanceeinstellung ab, so dass der Koordinator laut dem Standing des Koordinators Anleitung haben wir nicht erfunden; ein same-org-Mitglied kann immer noch die Die anderen Felder der Karte genau wie zuvor. Hinweis für den Koordinator: kamo-internal's MarketDiscountsTab.tsx Geschenkkarten-Edit-Dialog sendet heute aktuell und dieses Feld wird nun stillschweigend ignoriert - eine dedizierte Anpassungsbalance Endpunkt (Spiegel /stock-levels/{uid'/adjust) hinter seinem eigenen Recht ist die rechts fix und braucht eine Produktentscheidung, nicht eine einseitige neue RoleRightType. Auch im Vorbeigehen beim Re-Derivieren dieser Signaturen behoben: Erstellen vonShipment lesen orderId vom falschen Ort (der Controller bestanden orgId positionell, wo orderId gehörte; die Benutzeroberfläche sendet immer orderId in der POST-Körper) - es liest jetzt orderId aus dem Körper, das ist, was jeder Anrufer bereits sendet. Dies ist eine funktionale Lösung, keine Sicherheitslösung. Tests: RetailServiceOrgScopingTest und **************** eine repräsentative Ressource pro Projektarchiv-Muster abdecken (eigene Org-Spalte, via-Eltern-Beitritt) mit einem Foreign-Or lesen/update/löschen, das ohne die Korrektur und ein gleicher Ruf, der erfolgreich ist, plus die Geschenkkarte mass- Zuweisungsregel. Mutation-checked: Reverse die Nachforschungen zu findenById gemacht alle neun "Foreign Org"-Tests scheitern rot; vor der Übergabe wiederhergestellt.
