컴퓨터과학챕터 5약 3분

Ch5. 소프트웨어 보안 — 안전한 코드 작성과 OWASP Top 10

O
OIYO 편집부기여자
5/8

보안 SDLC

소프트웨어 개발 생애주기(SDLC)의 각 단계에 보안 통합:

요구사항: 보안 요구사항 정의, 위협 모델링 설계: 보안 아키텍처, 위협 모델링(STRIDE) 개발: 시큐어 코딩 가이드라인 테스팅: SAST, DAST, 침투 테스팅 배포: 안전한 구성, 비밀 관리 유지보수: 패치 관리, 취약점 모니터링


OWASP Top 10 (2021)

웹 애플리케이션의 가장 흔한 보안 취약점:

1. SQL Injection

사용자 입력이 SQL 쿼리의 일부로 실행됩니다.

-- 취약한 코드:
query = "SELECT * FROM users WHERE name = '" + userInput + "'";
-- 공격자 입력: ' OR '1'='1
-- 결과: 모든 사용자 데이터 반환

-- 방어: 준비된 구문(Prepared Statement) 사용
query = "SELECT * FROM users WHERE name = ?"

SQLi 방어의 핵심: 파라미터화된 쿼리(Parameterized Query) 또는 ORM 사용. 사용자 입력을 절대 SQL 쿼리에 직접 삽입하지 않습니다. 입력 검증만으로는 불충분합니다.

2. Broken Authentication

취약한 인증 구현. 기본 자격증명, 세션 관리 결함.

방어: 강력한 패스워드 정책, MFA, 안전한 세션 관리.

3. Cross-Site Scripting (XSS)

악성 스크립트를 웹 페이지에 삽입.

<!-- 취약: 입력을 그대로 출력 -->
<div><?= $_GET['name'] ?></div>
<!-- 공격자 입력: <script>document.cookie</script> -->

<!-- 방어: HTML 인코딩/이스케이프 -->
<div><?= htmlspecialchars($_GET['name']) ?></div>

4. Insecure Direct Object References

URL에 내부 객체 ID 노출 + 권한 검사 없음.

/user/profile?id=1234 → 공격자가 id=1235로 변경해 타인 프로필 접근

5. CSRF (Cross-Site Request Forgery)

희생자 브라우저를 이용해 인증된 요청 위조.

방어: CSRF 토큰, SameSite 쿠키.


입력 검증

화이트리스트 검증: 허용되는 입력만 정의. 블랙리스트보다 강력.

출력 인코딩: 데이터를 화면에 표시할 때 안전한 형태로 변환.


보안 테스팅

방법설명
SAST(정적 분석)코드 분석, 배포 전, “화이트박스”
DAST(동적 분석)실행 중 분석, 배포 후, “블랙박스”
침투 테스팅실제 공격자처럼 시도
코드 리뷰보안 전문가가 코드 검토

핵심 개념 카드

SQL Injection 방어 ★★★★★ : 파라미터화된 쿼리(Prepared Statement) 사용. 사용자 입력을 SQL에 직접 삽입 절대 금지.

XSS 방어 ★★★★★ : 출력 시 HTML 인코딩/이스케이프. Content-Security-Policy(CSP) 헤더 설정.

SAST vs DAST ★★★★☆ : SAST=코드 분석(빌드 전), DAST=실행 중 분석(배포 후). 두 가지 모두 사용 권장.


실전 퀴즈

Q1. 웹 애플리케이션 로그인 페이지에서 SQL Injection 취약점을 예방하는 가장 효과적인 방법은?

파라미터화된 쿼리(Prepared Statement) 또는 ORM(Object-Relational Mapping)을 사용합니다. 이 방법은 사용자 입력을 코드와 데이터를 분리해서 처리하므로, 입력이 아무리 악의적이어도 SQL 쿼리의 일부로 실행될 수 없습니다.

Q2. CSRF 공격이 어떻게 동작하는지, 그리고 CSRF 토큰이 어떻게 방어하는지 설명하시오.

CSRF: 공격자가 희생자를 악의적인 사이트로 유도하면, 그 사이트가 희생자의 인증된 세션 쿠키를 이용해 희생자 의사 없이 은행 이체 같은 요청을 합법적 사이트에 보냅니다. CSRF 토큰 방어: 서버가 각 폼에 예측 불가능한 고유 토큰을 포함시키고, 요청 시 이 토큰을 검증합니다. 공격자는 피해자의 토큰을 알 수 없으므로 위조 요청을 만들 수 없습니다.

O

OIYO 편집부

편집부

OIYO 편집부는 경제·법률·생활·자기이해 주제를 1차 자료와 공개 통계로 검증해 정리합니다. 모든 글은 출처 표기와 정기 점검을 거쳐 실용성과 정확성을 함께 유지합니다.