PromleeBlog
sitemap
aboutMe

posting thumbnail
웹 보안 3대 취약점 (XSS, CSRF, SQL Injection)과 방어법
Defending Against XSS, CSRF, and SQL Injection

📅

🚀

들어가기 전에 🔗

우리가 만든 웹 서비스가 사용자에게 신뢰를 주기 위해서는, 기능적으로 훌륭하게 동작하는 것을 넘어
안전하게
동작해야 합니다.
이번 시간에는 웹 애플리케이션을 위협하는 가장 흔하고 위험한 세 가지 공격,
XSS, CSRF, 그리고 SQL Injection
에 대해 알아보겠습니다.

이들의 이름만 들어서는 어렵게 느껴질 수 있지만, 각 공격이 어떤 허점을 노리고 어떻게 동작하는지 그 원리를 이해하면 방어하는 방법은 생각보다 명확해집니다.
오늘은 각 공격의 개념과 방어법을 명확히 익혀보겠습니다.

🚀

1. XSS (Cross-Site Scripting) - 내 사이트에서 실행되는 악성 스크립트 🔗

XSS는 공격자가 웹 애플리케이션에
악의적인 스크립트를 삽입
하여, 다른 사용자의 브라우저에서 해당 스크립트가 실행되게 만드는 공격입니다.
마치 누구나 글을 쓸 수 있는
게시판에 악성 코드를 몰래 숨겨두는 것
과 같습니다.
다른 사용자가 그 게시글을 읽는 순간, 숨겨둔 악성 코드가 그 사용자의 컴퓨터에서 실행되는 것입니다.


🚀

2. CSRF (Cross-Site Request Forgery) - 내 권한으로 위조된 요청 보내기 🔗

CSRF는 공격자가 사용자의 권한을 도용하여, 사용자가
자신의 의지와는 무관하게 특정 웹사이트에 위조된 요청을 보내게 만드는 공격
입니다.
마치 내가 로그인된 상태를 이용하여,
내 이름으로 다른 사람이 은행에 몰래 송금 요청 편지를 보내는 것
과 같습니다.


🚀

3. SQL 인젝션 (SQL Injection) - 데이터베이스에 직접 명령 내리기 🔗

SQL Injection은 공격자가 애플리케이션의 입력값을 조작하여, 개발자가 의도하지 않은
악의적인 SQL 쿼리를 데이터베이스에 직접 실행시키는 공격
입니다.

웹 3대 보안 취약점
웹 3대 보안 취약점

🚀

주요 면접 예상 질문 🔗

이 세 가지 공격은 웹 보안의 기본이므로, 그 차이점과 방어법을 묻는 질문은 반드시 나옵니다.

1. XSS와 CSRF의 가장 큰 차이점은 무엇인가요? 🔗

두 공격의 목표와 신뢰의 주체를 비교하여 설명하는 것이 핵심입니다.
가장 큰 차이는
공격의 대상과 신뢰의 주체
입니다.
XSS
는 악성 스크립트를 사이트에 주입하여, 해당 사이트를 신뢰하는
다른 사용자의 브라우저를 공격
하는 것입니다.
즉, 사용자의 '사이트에 대한 신뢰'를 악용합니다.
반면,
CSRF
는 사용자가 특정 사이트에 로그인된 상태를 이용하여, 그 사용자의 권한으로
사이트를 공격
하는 것입니다.
즉, 사이트의 '사용자 브라우저에 대한 신뢰(쿠키)'를 악용합니다.
XSS는 사용자 정보 탈취가 주 목적이라면, CSRF는 사용자 모르게 특정 행위를 시키는 것이 주 목적입니다.

2. SQL Injection을 방어하는 가장 효과적인 방법과 그 이유는 무엇인가요? 🔗

단순히 방법을 아는 것을 넘어, 그 원리를 이해하고 있는지 확인하는 질문입니다.
가장 효과적인 방법은
Prepared Statement(매개변수화된 쿼리)
를 사용하는 것입니다.
그 이유는, 사용자의 입력값을 SQL 쿼리의 일부로 직접 합치는 것이 아니라, 쿼리의 '틀'과 사용자의 '데이터'를 분리하여 데이터베이스에 전달하기 때문입니다.
데이터베이스는 전달받은 '데이터'를 절대로 실행 가능한 코드로 해석하지 않고 순수한 값으로만 처리하므로, 악의적인 SQL 구문이 주입되어 쿼리가 변질될 가능성을 원천적으로 차단할 수 있습니다.

🚀

결론 🔗

오늘은 웹 애플리케이션을 위협하는 3대 보안 취약점과 그 방어법에 대해 알아보았습니다.

참고 🔗