Sicherheit: SVG-Upload für Logo/Favicon nicht mehr erlaubt
Der Branding-Upload akzeptierte bisher jeden Dateityp, der clientseitig mit "image/" beginnt, inkl. SVG. Anders als beim vorherigen Supabase- Storage-Bucket (andere Origin) wird die Datei jetzt auf der eigenen Origin unter /branding/[filename] ausgeliefert – eine SVG mit eingebettetem <script> hätte bei direktem Aufruf der Datei-URL (z. B. "Bild in neuem Tab öffnen") mit dem Session-Cookie eines anderen Admins ausgeführt werden können und wäre dabei auch am CSRF-Schutz vorbeigekommen (Origin stimmt ja). Upload-Route erlaubt jetzt nur noch eine Whitelist an Rasterformaten (png/jpg/webp/gif/ico), die Dateiendung wird aus dem geprüften MIME-Typ abgeleitet statt aus dem vom Client gesendeten Dateinamen. Die Ausliefer-Route kennt "svg" als Content-Type nicht mehr (Defense in Depth). Gefunden bei der Sicherheitsprüfung vor dem Merge nach master.
This commit is contained in:
@@ -164,7 +164,7 @@ export default function DesignEditor() {
|
||||
{dict.designEditor.logoUpload}
|
||||
<input
|
||||
type="file"
|
||||
accept="image/*"
|
||||
accept="image/png,image/jpeg,image/webp,image/gif,image/x-icon"
|
||||
className="hidden"
|
||||
onChange={(e) => uploadAsset("logo", e)}
|
||||
disabled={busy}
|
||||
@@ -201,7 +201,7 @@ export default function DesignEditor() {
|
||||
{dict.designEditor.faviconUpload}
|
||||
<input
|
||||
type="file"
|
||||
accept="image/*"
|
||||
accept="image/png,image/jpeg,image/webp,image/gif,image/x-icon"
|
||||
className="hidden"
|
||||
onChange={(e) => uploadAsset("favicon", e)}
|
||||
disabled={busy}
|
||||
|
||||
Reference in New Issue
Block a user