웹사이트 취약점: XSS 공격 방어와 보안 브라우저 사용
XSS 공격, 지금 당신의 브라우저가 위험합니다
온라인 쇼핑몰에서 결제 버튼을 눌렀는데 갑자기 이상한 팝업창이 뜨거나, 로그인 정보가 다른 사이트로 전송되고 있다면 XSS(Cross-Site Scripting) 공격을 당하고 있을 가능성이 높습니다. 20년간 수많은 보안 사고를 처리해본 결과, XSS는 가장 교묘하면서도 피해 규모가 큰 웹 취약점 중 하나입니다.
긴급 점검 사항: 브라우저 주소창에 `javascript:` 코드가 실행되거나, 예상치 못한 리디렉션이 발생한다면 즉시 해당 사이트에서 나와 브라우저를 종료하십시오. 개인정보 탈취가 진행 중일 수 있습니다.
XSS 공격의 작동 원리와 위험성
XSS 공격은 신뢰할 수 있는 웹사이트에 악성 스크립트를 삽입하여 사용자의 브라우저에서 실행되도록 하는 공격입니다. 해커는 게시판, 댓글창, 검색창 등 사용자 입력을 받는 모든 곳을 공격 경로로 활용합니다.
공격 시나리오는 다음과 같습니다. 해커가 쇼핑몰 상품 후기란에 “ 같은 코드를 삽입합니다. 다른 사용자가 해당 상품 페이지를 방문하면 브라우저는 이 스크립트를 정상적인 웹사이트 코드로 인식하여 실행하고, 결과적으로 사용자의 쿠키 정보가 해커 서버로 전송됩니다.
XSS 공격 유형별 특징 분석

실무에서 마주치는 XSS 공격은 크게 세 가지 유형으로 구분됩니다. 각각의 공격 방식을 정확히 이해해야 적절한 방어 전략을 수립할 수 있습니다.
Stored XSS(저장형)는 가장 위험한 형태입니다. 악성 스크립트가 웹사이트 데이터베이스에 영구 저장되어 해당 페이지를 방문하는 모든 사용자에게 피해를 줍니다. 게시판, 방명록, 사용자 프로필 등이 주요 공격 대상입니다.
Reflected XSS(반사형)는 URL 파라미터나 폼 데이터를 통해 전달된 스크립트가 즉시 실행되는 방식입니다. 피싱 이메일에 포함된 악성 링크를 클릭했을 때 주로 발생하며, `http://vulnerable-site.com/search?q=` 형태로 나타납니다.
DOM-based XSS는 클라이언트 측 JavaScript가 DOM(Document Object Model)을 부적절하게 조작할 때 발생합니다. 서버와의 통신 없이 브라우저 내에서만 실행되어 탐지가 어려운 특징이 있습니다.
현재 브라우저 보안 상태 진단 방법
XSS 공격에 대한 브라우저의 현재 방어 수준을 확인하는 것이 보안 강화의 첫 단계입니다. 다음 진단 절차를 통해 취약점을 파악할 수 있습니다.
- 브라우저 개발자 도구(F12)를 열고 Console 탭으로 이동합니다.
- document.cookie를 입력하여 쿠키 정보 노출 여부를 확인합니다.
- Content Security Policy 헤더 존재 여부를 Network 탭에서 점검합니다.
- JavaScript 실행 권한과 팝업 차단 설정을 브라우저 보안 설정에서 검토합니다.
대부분의 최신 브라우저는 XSS Filter나 XSS Auditor 같은 내장 보안 기능을 제공하지만, 이것만으로는 모든 공격을 막을 수 없습니다. 특히 Internet Explorer 구버전이나 보안 업데이트가 중단된 브라우저를 사용 중이라면 즉시 교체가 필요합니다.
브라우저 보안 설정으로 XSS 차단하기

XSS 공격을 방어하는 가장 직접적인 방법은 브라우저의 보안 기능을 최대한 활용하는 것입니다. 대부분의 사용자가 기본 설정 그대로 사용하고 있어 보안 취약점에 노출되어 있습니다.
Chrome 브라우저 보안 강화
Chrome에서 XSS 방어를 위한 필수 설정 절차입니다.
- chrome://settings/security를 주소창에 입력
- ‘고급 보호 기능’ 또는 ‘표준 보호 기능’ 선택 (고급 권장)
- chrome://settings/content에서 JavaScript 설정 확인
- ‘사이트에서 JavaScript 실행 허용’ 아래 ‘신뢰할 수 없는 사이트에서 차단’ 추가
- 팝업 및 리디렉션 차단 옵션 활성화
주의: JavaScript를 완전히 차단하면 정상적인 웹사이트도 작동하지 않습니다. 신뢰할 수 있는 사이트는 예외 목록에 추가하세요.
Firefox 보안 설정 최적화
Firefox는 about:config를 통해 더욱 세밀한 보안 설정이 가능합니다.
- 주소창에 about:config 입력 후 ‘위험을 감수하고 계속’ 클릭
- security.csp.enable 검색하여 true로 설정
- security.tls.insecure_fallback_hosts를 빈 값으로 설정
- dom.disable_window_open_feature 관련 항목들을 true로 변경
- 확장 프로그램에서 NoScript 또는 uBlock Origin 설치
웹사이트 개발자를 위한 XSS 방어 코드
웹사이트를 운영하고 있다면 서버 측에서 XSS를 원천 차단하는 코드 구현이 필수입니다. 입력값 검증과 출력값 인코딩이 핵심입니다.
입력 데이터 검증 및 필터링
사용자 입력을 받는 모든 지점에서 다음과 같은 검증 로직을 적용해야 합니다.
- HTML 태그 제거: <script>, <iframe>, <object> 등
- JavaScript 이벤트 핸들러 차단: onclick, onload, onerror
- URL 스키마 검증: javascript:, data:, vbscript: 차단
- 특수문자 이스케이프: <를 <로, >를 >로 변환
CSP(Content Security Policy) 헤더 설정
웹서버에서 CSP 헤더를 설정하면 XSS 공격을 효과적으로 차단할 수 있습니다.
Content-Security-Policy: default-src ‘self’; script-src ‘self’ ‘unsafe-inline’; object-src ‘none’;
일상적인 XSS 방어 수칙
기술적 설정만으로는 완벽한 방어가 어렵습니다. 사용자의 주의깊은 웹 이용 습관이 더욱 중요합니다. 특히 이메일이나 SNS를 통해 전달되는 이벤트 링크는 피싱이나 XSS 공격의 주요 경로가 되기 쉽습니다. 무료 쿠폰 및 기프티콘 이벤트 당첨 확률 높이는 법처럼 혜택을 제공하는 콘텐츠를 이용할 때에도, 공식 채널 여부와 페이지 내 스크립트 동작을 반드시 확인하고 불필요한 권한 요청이 있는 사이트는 접근을 피하는 것이 안전합니다.
- 의심스러운 링크 클릭 금지 – 특히 이메일이나 SNS를 통해 받은 링크
- 공공 WiFi에서 개인정보 입력 자제
- 브라우저와 플러그인 최신 버전 유지
- 신뢰할 수 없는 사이트에서 파일 다운로드 금지
- 정기적인 쿠키 및 캐시 삭제
XSS 공격 의심 시 즉시 대응 방법
이미 XSS 공격을 당했다고 의심된다면 피해 확산을 막기 위한 신속한 조치가 필요합니다.
- 즉시 해당 웹사이트에서 로그아웃
- 브라우저 전체 종료 후 재시작
- 쿠키, 캐시, 저장된 비밀번호 전체 삭제
- 중요 계정(은행, 이메일, SNS) 비밀번호 즉시 변경
- 백신 프로그램으로 전체 시스템 검사
전문가 팁으로 XSS 공격은 사후 대응보다 예방이 훨씬 중요합니다. 매월 첫째 주처럼 일정한 주기를 정해 브라우저 보안 설정을 점검하고, 계정 로그인 기록에 의심스러운 활동이 없는지 확인하는 습관을 들이세요. 특히 온라인 쇼핑이나 인터넷 뱅킹을 이용하기 전에는 주소창에 표시된 SSL 인증서, 즉 자물쇠 아이콘을 반드시 확인하는 것이 기본적인 보안 수칙입니다. 이러한 예방 중심 보안 관리 방법에 대한 추가 내용은 관련 정보 살펴보기를 통해 확인할 수 있습니다.