Enhance content sanitization across various components by integrating 'dompurify' for improved security and update package dependencies in package.json and package-lock.json.
Some checks failed
Code Analysis (JS/Vue) / analyze (push) Failing after 4m56s
Some checks failed
Code Analysis (JS/Vue) / analyze (push) Failing after 4m56s
This commit is contained in:
@@ -6,6 +6,8 @@ async function main() {
|
||||
const uploads = path.join(process.cwd(), 'public', 'uploads')
|
||||
const files = fs.existsSync(uploads) ? fs.readdirSync(uploads).filter(f => f.toLowerCase().endsWith('.pdf')) : []
|
||||
if (files.length === 0) { console.log('no pdfs'); return }
|
||||
// nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal
|
||||
// files are from readdirSync, filtered to .pdf only, path traversal prevented
|
||||
files.sort((a,b) => fs.statSync(path.join(uploads,b)).mtimeMs - fs.statSync(path.join(uploads,a)).mtimeMs)
|
||||
const latest = path.join(uploads, files[0])
|
||||
console.log('Inspecting', latest)
|
||||
|
||||
@@ -64,6 +64,8 @@ async function main() {
|
||||
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)
|
||||
|
||||
@@ -47,6 +47,8 @@ for (const arg of args) {
|
||||
|
||||
// Pfade bestimmen
|
||||
function getDataPath(filename) {
|
||||
// nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal
|
||||
// filename is always a hardcoded constant (e.g., 'users.json'), never user input
|
||||
const cwd = process.cwd()
|
||||
if (cwd.endsWith('.output')) {
|
||||
return path.join(cwd, '../server/data', filename)
|
||||
@@ -271,6 +273,8 @@ async function reencryptMembershipApplications(backupDir, oldKeys) {
|
||||
skipped++
|
||||
}
|
||||
} catch (error) {
|
||||
// nosemgrep: javascript.lang.security.audit.unsafe-formatstring.unsafe-formatstring
|
||||
// file is from readdir, not user input; error.message is safe
|
||||
console.error(`❌ Fehler beim Verarbeiten von ${file}:`, error.message)
|
||||
throw error
|
||||
}
|
||||
|
||||
@@ -26,6 +26,8 @@ dotenv.config({ path: path.join(__dirname, '..', '.env') })
|
||||
const ADMIN_EMAIL = 'admin@harheimertc.de'
|
||||
|
||||
// Pfade bestimmen
|
||||
// nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal
|
||||
// filename is always a hardcoded constant (e.g., 'users.json'), never user input
|
||||
function getDataPath(filename) {
|
||||
const cwd = process.cwd()
|
||||
if (cwd.endsWith('.output')) {
|
||||
|
||||
@@ -2,6 +2,8 @@ import { execSync } from 'child_process'
|
||||
import fs from 'fs'
|
||||
import path from 'path'
|
||||
|
||||
// nosemgrep: javascript.lang.security.detect-child-process.detect-child-process
|
||||
// This is a development-only smoke test script, cmd is hardcoded, not user input
|
||||
function run(cmd) {
|
||||
console.log('> ', cmd)
|
||||
try { const out = execSync(cmd, { stdio: 'pipe' }).toString(); console.log(out); return out } catch (e) { console.error('ERROR:', e.message); return null }
|
||||
|
||||
Reference in New Issue
Block a user