피드로 돌아가기
Dev.toSecurity
원문 읽기
Reflection 기반 Whitelist 설계를 통한 EF Core Dynamic Update 보안 강화
Dynamic Column Updates in EF Core Without Hand-Rolling SQL Injection
AI 요약
Context
운영자 설정에 따라 업데이트 컬럼이 변하는 동적 매핑 요구사항 존재. 단순 SQL 문자열 결합 방식은 SQL Injection 취약점을 유발하며 데이터베이스 스키마 노출 위험이 큼.
Technical Solution
- EF.Property 활용을 통한 SQL 파라미터화 및 런타임 모델 검증 체계 구축
- Reflection 기반의 Dynamic Whitelist를 생성하여 스키마와 동기화된 허용 리스트 자동 관리
- Forbidden HashSet 기반의 Blacklist를 통한 민감 필드(Id, CreatedAt 등) 접근 원천 차단
- Transactional Scope 적용을 통한 다중 컬럼 업데이트의 원자성(Atomicity) 보장
- 외부 입력값을 인덱스로만 활용하여 SQL 직접 생성 단계를 완전히 제거한 Fail-closed 구조 설계
실천 포인트
1. 동적 컬럼 업데이트 필요 시 SQL 문자열 결합 대신 ORM의 동적 프로퍼티 접근 기능 검토
2. Reflection을 통해 엔티티 모델에서 직접 Whitelist를 추출하여 스키마 변경 시 관리 포인트 최소화
3. 업데이트 금지 필드를 명시한 Blacklist를 Whitelist에서 제외하는 2중 필터링 적용
4. 루프 내 개별 업데이트 발생 시 성능 저하 가능성을 고려하여 트랜잭션 범위 및 배치 처리 여부 검토