SonarQube Insecure Random 막는 법 — Math.random 3가지 케이스

SonarQube Insecure Random — S2245 룰 경고 화면

이 글에 등장하는 코드는 금융권 보안 정책상 실제 프로젝트 코드를 그대로 공개할 수 없어, 동일한 취약 패턴과 해결 흐름을 재현한 샘플로 대체했다. 클래스명·테이블명·경로 같은 식별자는 가상이지만, SonarQube가 잡는 데이터 플로우와 통과 조건은 실제 환경과 같다. 📑 목차 레거시에서 발견된 패턴 — Java + JavaScript 시도 1. seed 개선 — 실패 시도 2. new Random(SecureRandom seed) … 더 읽기

SonarQube Deserialization 룰 통과 — ObjectInputStream 4단계

SonarQube Deserialization — S5135 룰 경고 화면

이 글에 등장하는 코드는 금융권 보안 정책상 실제 프로젝트 코드를 그대로 공개할 수 없어, 동일한 취약 패턴과 해결 흐름을 재현한 샘플로 대체했다. 클래스명·테이블명·경로 같은 식별자는 가상이지만, SonarQube가 잡는 데이터 플로우와 통과 조건은 실제 환경과 같다. 📑 목차 레거시에서 발견된 패턴 시도 1. readObject 후 검증 — 실패 시도 2. ObjectInputFilter (JDK 9+) — 부분 통과 … 더 읽기

SonarQube CORS 잡는법 — Access-Control 헤더 3가지 패턴

SonarQube CORS — S5122 Security Hotspot 경고 화면

이 글에 등장하는 코드는 금융권 보안 정책상 실제 프로젝트 코드를 그대로 공개할 수 없어, 동일한 취약 패턴과 해결 흐름을 재현한 샘플로 대체했다. 클래스명·도메인명·경로 같은 식별자는 가상이지만, SonarQube가 잡는 데이터 플로우와 통과 조건은 실제 환경과 같다. 📑 목차 발견된 패턴 — 와일드카드 + credentials 시도 1. null origin 차단 — 실패 시도 2. origin 패턴 검증 … 더 읽기

SonarQube eval Injection 해결 — Function 동적 실행 3가지

SonarQube eval Injection — S1523 Security Hotspot 경고 화면

이 글에 등장하는 코드는 금융권 보안 정책상 실제 프로젝트 코드를 그대로 공개할 수 없어, 동일한 취약 패턴과 해결 흐름을 재현한 샘플로 대체했다. 클래스명·변수명·경로 같은 식별자는 가상이지만, SonarQube가 잡는 데이터 플로우와 통과 조건은 실제 환경과 같다. 📑 목차 SonarQube eval Injection이 뜨는 패턴 시도 1. 정규식 sanitize — 실패 시도 2. Function constructor 분리 — 통과 … 더 읽기

SonarQube DOM XSS 시도 4가지 — innerHTML 통과 코드

SonarQube DOM XSS — S5696 룰 경고 화면

SonarQube DOM XSS 룰 S5696 대응 과정을 기록한 글이다. 금융권 보안 정책상 실제 프로젝트 코드를 그대로 공개할 수 없어, 동일한 취약 패턴과 해결 흐름을 재현한 샘플로 대체했다. 클래스명·컴포넌트명·경로 같은 식별자는 가상이지만, SonarQube가 잡는 데이터 플로우와 통과 조건은 실제 환경과 같다. 📑 목차 어드민 SPA에서 발견된 패턴 시도 1. 정규식으로 script 태그 제거 — 실패 시도 … 더 읽기

SonarQube Stored XSS 빠르게 잡기 — DB 출력 3가지 패턴

SonarQube Stored XSS — S5131 룰이 DB 출력 단에서 잡힌 화면

이 글에 등장하는 코드는 금융권 보안 정책상 실제 프로젝트 코드를 그대로 공개할 수 없어, 동일한 취약 패턴과 해결 흐름을 재현한 샘플로 대체했다. 클래스명·테이블명·경로 같은 식별자는 가상이지만, SonarQube가 잡는 데이터 플로우와 통과 조건은 실제 환경과 같다. 📑 목차 레거시에서 발견된 패턴 시도 1. 입력 시 sanitize — 실패 시도 2. JSTL c:out 적용 — 부분 통과 … 더 읽기

SonarQube Insecure Cookie 정복 — Secure HttpOnly 3단계 적용

SonarQube Insecure Cookie — S2092 S3330 룰 경고 화면

이 글에 등장하는 코드는 금융권 보안 정책상 실제 프로젝트 코드를 그대로 공개할 수 없어, 동일한 취약 패턴과 해결 흐름을 재현한 샘플로 대체했다. 클래스명·테이블명·경로 같은 식별자는 가상이지만, SonarQube가 잡는 데이터 플로우와 통과 조건은 실제 환경과 같다. 📑 목차 레거시에서 발견된 패턴 시도 1. setSecure(true)만 — S3330이 남는다 시도 2. setSecure + setHttpOnly — 통과는 됐지만 시도 … 더 읽기

SonarQube Open Redirect 막는 법 — sendRedirect 3가지 패턴

SonarQube Open Redirect — S5146 룰 경고 화면

이 글에 등장하는 코드는 금융권 보안 정책상 실제 프로젝트 코드를 그대로 공개할 수 없어, 동일한 취약 패턴과 해결 흐름을 재현한 샘플로 대체했다. 클래스명·테이블명·경로 같은 식별자는 가상이지만, SonarQube가 잡는 데이터 플로우와 통과 조건은 실제 환경과 같다. 📑 목차 레거시에서 발견된 패턴 시도 1. javascript: 차단 — 실패 시도 2. host 검증 — 부분 통과 시도 3. … 더 읽기

SonarQube Weak Cryptography 해결 — MD5에서 BCrypt까지 4단계

SonarQube Weak Cryptography — S4790 룰 경고 화면

이 글에 등장하는 코드는 금융권 보안 정책상 실제 프로젝트 코드를 그대로 공개할 수 없어, 동일한 취약 패턴과 해결 흐름을 재현한 샘플로 대체했다. 클래스명·테이블명·경로 같은 식별자는 가상이지만, SonarQube가 잡는 데이터 플로우와 통과 조건은 실제 환경과 같다. 📑 목차 레거시에서 발견된 패턴 시도 1. SHA-256 변경 — 룰은 통과, 보안은 낙제 시도 2. salt + SHA-256 — … 더 읽기

SonarQube CSRF 룰 통과 — Spring Security 4단계 적용

SonarQube CSRF — S4502 Security Hotspot 경고 화면

이 글에 등장하는 코드는 금융권 보안 정책상 실제 프로젝트 코드를 그대로 공개할 수 없어, 동일한 취약 패턴과 해결 흐름을 재현한 샘플로 대체했다. 클래스명·테이블명·경로 같은 식별자는 가상이지만, SonarQube가 잡는 데이터 플로우와 통과 조건은 실제 환경과 같다. 📑 목차 레거시에서 발견된 패턴 시도 1. csrf().disable() 그대로 두고 다른 곳 수정 — 실패 시도 2. API 엔드포인트만 disable … 더 읽기