From b36330c94400f39ec9baed64b82a73bae58edbf2 Mon Sep 17 00:00:00 2001 From: joonhoekim <26rote@gmail.com> Date: Mon, 18 Aug 2025 01:06:37 +0000 Subject: (김준회) 파일업로드시 바이너리검증부 주석처리, knex webpack 한계로 인한 빌드 로그 경고 무시, 환경변수 오류 처리, 벤더 로그인 폼 사업자번호를 000 으로 수정, 유저 phone number 사이즈 늘림, 도커 DB 예시 추가 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/file-stroage.ts | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) (limited to 'lib/file-stroage.ts') diff --git a/lib/file-stroage.ts b/lib/file-stroage.ts index c347ffe3..7bc9ef1c 100644 --- a/lib/file-stroage.ts +++ b/lib/file-stroage.ts @@ -194,31 +194,31 @@ class FileSecurityValidator { return { valid: true }; } - // 파일 내용 기본 검증 (매직 넘버 체크 + XSS 패턴 검사) + // 파일 내용 기본 검증 (매직 넘버 체크(비활성화) + XSS 패턴 검사) static async validateFileContent(buffer: Buffer, fileName: string): Promise<{ valid: boolean; error?: string }> { try { const extension = path.extname(fileName).toLowerCase().substring(1); - // 파일 시그니처 (매직 넘버) 검증 - const fileSignatures: Record = { - 'pdf': [Buffer.from([0x25, 0x50, 0x44, 0x46])], // %PDF - 'jpg': [Buffer.from([0xFF, 0xD8, 0xFF])], - 'jpeg': [Buffer.from([0xFF, 0xD8, 0xFF])], - 'png': [Buffer.from([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])], - 'gif': [Buffer.from([0x47, 0x49, 0x46, 0x38])], // GIF8 - 'zip': [Buffer.from([0x50, 0x4B, 0x03, 0x04]), Buffer.from([0x50, 0x4B, 0x05, 0x06])], - }; + // 파일 시그니처 (매직 넘버) 검증 << DRM 파일 처리 불가로 주석 처리 + // const fileSignatures: Record = { + // 'pdf': [Buffer.from([0x25, 0x50, 0x44, 0x46])], // %PDF + // 'jpg': [Buffer.from([0xFF, 0xD8, 0xFF])], + // 'jpeg': [Buffer.from([0xFF, 0xD8, 0xFF])], + // 'png': [Buffer.from([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])], + // 'gif': [Buffer.from([0x47, 0x49, 0x46, 0x38])], // GIF8 + // 'zip': [Buffer.from([0x50, 0x4B, 0x03, 0x04]), Buffer.from([0x50, 0x4B, 0x05, 0x06])], + // }; - const expectedSignatures = fileSignatures[extension]; - if (expectedSignatures) { - const hasValidSignature = expectedSignatures.some(signature => - buffer.subarray(0, signature.length).equals(signature) - ); + // const expectedSignatures = fileSignatures[extension]; + // if (expectedSignatures) { + // const hasValidSignature = expectedSignatures.some(signature => + // buffer.subarray(0, signature.length).equals(signature) + // ); - if (!hasValidSignature) { - return { valid: false, error: `파일 내용이 확장자와 일치하지 않습니다: ${extension}` }; - } - } + // if (!hasValidSignature) { + // return { valid: false, error: `파일 내용이 확장자와 일치하지 않습니다: ${extension}` }; + // } + // } // 실행 파일 패턴 검색 const executablePatterns = [ -- cgit v1.2.3