SQL 쿼리에 사용자 입력이 직접 포함됨
높음실행 검증 안 함
src/users/user.repository.ts:42
요청의 email 값이 SQL 문자열에 직접 합쳐집니다. 입력이 쿼리 구조에 영향을 줄 수 있으므로, SQL 문장과 값을 분리하는 수정이 필요합니다.
- 발견 규칙
- teum/sql-user-input
- 분류
- CWE-89
수정안 비교
예제 코드
발견 시점 코드
삭제, 기존 42행: const sql = `SELECT id, email FROM users삭제, 기존 43행: WHERE email = '${email}'`;삭제, 기존 44행: return this.dataSource.query(sql);
수정 제안 · 예시
추가, 수정 42행: return this.dataSource.query(추가, 수정 43행: 'SELECT id, email FROM users WHERE email = ?',추가, 수정 44행: [email],추가, 수정 45행: );
MariaDB + TypeORM 예시입니다. 사용하는 드라이버의 파라미터 형식과 기존 반환값을 확인하세요.
수정 후 확인할 것
직접 확인할 항목
- 정상 이메일 조회 결과가 기존과 같은지 확인
- 사용자 입력이 SQL 문법이 아닌 값으로 전달되는지 확인
검토한 내용을 상태로 남기세요.
현재 처리 상태: 미검토
샘플의 상태만 바뀌며 코드에는 적용되지 않아요. 위험 수용은 사유와 기한이 필요한 실제 작업 공간에서 기록해요. 재점검 관측 결과는 직접 변경하지 않아요.