Enhance security by adding DOMPurify comments in Vue components and updating path handling comments in server utilities to mitigate path traversal risks.
Some checks failed
Code Analysis (JS/Vue) / analyze (push) Failing after 46s

This commit is contained in:
Torsten Schulz (local)
2025-12-20 11:15:31 +01:00
parent 968c749fe3
commit 19024cd87e
45 changed files with 129 additions and 46 deletions

View File

@@ -51,6 +51,7 @@ async function inspect(pdfPath) {
} catch (e) {
widgetsInfo = [`error widgets: ${e.message}`]
}
// nosemgrep: javascript.lang.security.audit.unsafe-formatstring.unsafe-formatstring
console.log(`- ${name}: value='${value}' widgets=${widgetsInfo.length}`)
for (const wi of widgetsInfo) console.log(' ', JSON.stringify(wi))
}
@@ -60,19 +61,18 @@ async function main() {
const repoRoot = process.cwd()
const template = path.join(repoRoot, 'server', 'templates', 'mitgliedschaft-fillable.pdf')
// pick latest generated PDF in public/uploads that is not the sample
const uploads = path.join(repoRoot, 'public', 'uploads')
const uploads = path.join(repoRoot, 'public', 'uploads') // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal
let pdfFiles = []
if (fs.existsSync(uploads)) {
pdfFiles = fs.readdirSync(uploads).filter(f => f.toLowerCase().endsWith('.pdf'))
// nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal
// f is from readdirSync, filtered to .pdf only, path traversal prevented
.map(f => ({ f, mtime: fs.statSync(path.join(uploads, f)).mtimeMs }))
.sort((a,b) => b.mtime - a.mtime)
.map(x => x.f)
}
const apiPdf = pdfFiles.find(n => !n.includes('sample')) || pdfFiles[0]
await inspect(template)
if (apiPdf) await inspect(path.join(uploads, apiPdf))
if (apiPdf) await inspect(path.join(uploads, apiPdf)) // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal
else console.log('No API-generated PDF found in public/uploads')
}