window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster가 이미 존재합니다') } else { w.LeadBooster = { q: [], on: 함수 (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: 함수 (n) { this.q.push({ t: 't', n: n }) }, } } })() 웹 앱 보안 - XSS 취약점 - The Codest
The Codest
  • 회사 소개
  • 서비스
    • 소프트웨어 개발
      • 프론트엔드 개발
      • 백엔드 개발
    • Staff Augmentation
      • 프론트엔드 개발자
      • 백엔드 개발자
      • 데이터 엔지니어
      • 클라우드 엔지니어
      • QA 엔지니어
      • 기타
    • IT 자문
      • 감사 및 컨설팅
  • 산업 분야
    • 핀테크 및 뱅킹
    • E-commerce
    • 애드테크
    • 헬스 테크
    • 제조
    • 물류
    • 자동차
    • IOT
  • 가치
    • CEO
    • CTO
    • 배달 관리자
  • 우리 팀
  • Case Studies
  • 방법 알아보기
    • 블로그
    • 모임
    • 웹 세미나
    • 리소스
채용 정보 연락하기
  • 회사 소개
  • 서비스
    • 소프트웨어 개발
      • 프론트엔드 개발
      • 백엔드 개발
    • Staff Augmentation
      • 프론트엔드 개발자
      • 백엔드 개발자
      • 데이터 엔지니어
      • 클라우드 엔지니어
      • QA 엔지니어
      • 기타
    • IT 자문
      • 감사 및 컨설팅
  • 가치
    • CEO
    • CTO
    • 배달 관리자
  • 우리 팀
  • Case Studies
  • 방법 알아보기
    • 블로그
    • 모임
    • 웹 세미나
    • 리소스
채용 정보 연락하기
뒤로 화살표 뒤로 가기
2021-04-16
소프트웨어 개발

웹 앱 보안 - XSS 취약점

루카스 콜코

공격자는 XSS 공격을 통해 다른 사용자가 보는 웹 페이지에 클라이언트 측 스크립트를 삽입할 수 있습니다. 이 취약점의 주요 영향은 로그인한 사용자의 컨텍스트에서 모든 작업을 실행할 수 있고 로그인한 사용자의 컨텍스트에서 모든 데이터를 읽을 수 있다는 것입니다.

공격 시나리오

  1. 공격자는 피해자가 사용하는 웹사이트(예: 은행 웹사이트)에서 XSS 취약점을 찾습니다.
  2. 피해자가 현재 이 페이지에 로그인한 상태입니다.
  3. 공격자가 피해자에게 조작된 URL을 보냅니다.
  4. 피해자가 URL을 클릭합니다.
  5. 피해자의 은행 웹사이트, JavaScript 코드 사용자의 데이터를 가로채거나 공격자의 계정으로 사용자 대신 전송을 실행하기 위해 실행을 시작합니다.

피해자를 대신하여 수행되는 작업은 은행의 API를 사용하여 백그라운드에서 수행되거나 공격자가 인증, 토큰, 쿠키 등에 필요한 데이터를 사용하여 나중에 수행할 수 있으므로 피해자에게 보이지 않을 수 있다는 점에 유의할 필요가 있습니다.

XSS 유형

1. 반영된 XSS

이는 매개변수(예: GET, POST 또는 쿠키)에 포함된 HTML/JavaScript 코드가 응답으로 표시되는 경우입니다.

매개변수를 입력하는 텍스트를 검색할 수 있는 페이지입니다. ?search=foo 를 URL 끝에 추가해야 합니다. 구문을 입력한 후 해당 구문을 찾을 수 없는 경우 반환 메시지가 HTML ex.

<div>에 대한 결과를 찾을 수 없습니다. <b>foo</b></div>

URL을 입력해 볼 수 있습니다. ?search=..

2.DOM XSS

JavaScript에서 다음과 같은 위험한 기능을 사용하여 실행이 활성화된 경우입니다. `eval` 또는 `innerHtml`. 아래의 '라이브 예제'는 DOM XSS 공격에 대한 `innerHtml` 함수입니다.

3. 저장된 XSS

서버 측에서 악성 코드가 작성되는 경우입니다. 예를 들어, 서버에 업로드된 블로그 게시물에 악성 코드가 포함된 댓글을 보낼 수 있습니다. 예를 들어 관리자의 검토를 기다렸다가 세션 데이터를 훔치는 등의 작업을 수행합니다.

주입 방법

1. 태그 콘텐츠에서

`onerror=alert('XSS')`에

<img src onerror="alert('XSS')" />

2. 속성 내용에서

`" onmouseover=alert('XSS')` 에

<div class="" onmouseover="alert('XSS')""></div>

  1. 따옴표가 없는 속성 내용에서

x onclick=alert('XSS')에

<div class="x" onclick="alert('XSS')"></div>

  1. 에서 hrefef 속성

javascript:alert('XSS') 에

<a href="javascript:alert('XSS')"></a>

  1. JavaScript 코드 내부의 문자열에서

";alert('XSS')// 에

  1. JavaScript 이벤트가 있는 속성에서

');alert('XSS')// 어디 ' 는 작은따옴표로

<div onclick="change('&#39;);alert('XSS')//')">John</div>

  1. 에서 href 속성

);alert(1)// 어디 %27 는 작은따옴표로

<a href="javascript:change('');alert(1)//')">클릭</a>


라이브 예제

방어 방법

  1. 많은 기본 제공 함수를 사용한 데이터 인코딩 프로그래밍 언어.
  2. 자동 인코딩이 있는 템플릿 시스템 사용. 이러한 시스템을 사용하는 대부분의 인기 있는 프레임워크는 XSS 인젝션으로부터 사용자를 보호합니다(Django, 템플릿, Vue, React 등).
  3. 다음과 같은 기능을 사용하지 마십시오. 평가 또는 기능 신뢰할 수 없는 사용자 데이터로.
  4. HTML 코드를 DOM 트리 요소에 직접 할당하는 함수 및 속성을 사용하지 마십시오, innerHTML, outerHTML, insertAdjacentHTML, ocument.write. 대신 다음과 같이 이러한 요소에 직접 텍스트를 할당하는 함수를 사용할 수 있습니다. 텍스트 콘텐츠 또는 내부 텍스트.
  5. 사용자를 자신이 제어할 수 있는 URL로 리디렉션할 때는 주의하세요. 인젝션 위험 위치 = 'javascript('XSS')'.
  6. 다음과 같은 라이브러리를 사용하여 HTML을 필터링합니다. DOMPurify.
  7. 업로드 시 주의 사항 .html 또는 .svg 파일을 업로드할 수 있습니다. 업로드한 파일을 제공할 별도의 도메인을 만들 수 있습니다.
  8. 사용 콘텐츠 보안 정책 메커니즘.
  9. 대부분의 인기 브라우저에 내장된 XSS 방지 필터를 살펴보세요.

    이 글이 흥미로웠다면 Github에서 Lukasz를 팔로우하세요: https://github.com/twistezo

자세히 읽어보세요:

NextJS의 데이터 가져오기 전략

Rails API 및 CORS. 의식의 전환

타입스크립트를 사용해야 하는 이유는 무엇인가요?

관련 문서

소프트웨어 개발

미래 지향적인 웹 앱 구축: The Codest의 전문가 팀이 제공하는 인사이트

The Codest가 최첨단 기술로 확장 가능한 대화형 웹 애플리케이션을 제작하고 모든 플랫폼에서 원활한 사용자 경험을 제공하는 데 탁월한 성능을 발휘하는 방법을 알아보세요. Adobe의 전문성이 어떻게 디지털 혁신과 비즈니스를 촉진하는지 알아보세요...

최신
소프트웨어 개발

라트비아에 본사를 둔 10대 소프트웨어 개발 기업

최신 기사에서 라트비아 최고의 소프트웨어 개발 기업과 그들의 혁신적인 솔루션에 대해 알아보세요. 이러한 기술 리더들이 어떻게 귀사의 비즈니스를 향상시키는 데 도움을 줄 수 있는지 알아보세요.

thecodest
엔터프라이즈 및 스케일업 솔루션

Java 소프트웨어 개발 필수 사항: 성공적인 아웃소싱을 위한 가이드

The Codest로 효율성을 높이고 전문 지식을 활용하며 프로젝트 성공을 이끌 수 있는 성공적인 outsourcing Java 소프트웨어 개발에 대한 이 필수 가이드를 살펴보세요.

thecodest
소프트웨어 개발

폴란드 아웃소싱을 위한 최고의 가이드

폴란드에서 outsourcing가 급증한 것은 경제, 교육, 기술 발전으로 인한 IT 성장과 비즈니스 친화적인 환경이 조성된 덕분입니다.

더코데스트
엔터프라이즈 및 스케일업 솔루션

IT 감사 도구 및 기술에 대한 완벽한 가이드

IT 감사는 안전하고 효율적이며 규정을 준수하는 시스템을 보장합니다. 전체 기사를 읽고 그 중요성에 대해 자세히 알아보세요.

The Codest
야쿱 야쿠보비치 CTO & 공동 설립자

지식창고를 구독하고 IT 분야의 전문 지식을 최신 상태로 유지하세요.

    회사 소개

    The Codest - 폴란드에 기술 허브를 둔 국제 소프트웨어 개발 회사입니다.

    영국 - 본사

    • 사무실 303B, 182-184 하이 스트리트 노스 E6 2JA
      영국 런던

    폴란드 - 현지 기술 허브

    • 파브리츠나 오피스 파크, 알레야
      포코주 18, 31-564 크라쿠프
    • 뇌 대사관, 콘스트럭터스카
      11, 02-673 바르샤바, 폴란드

      The Codest

    • 홈
    • 회사 소개
    • 서비스
    • Case Studies
    • 방법 알아보기
    • 채용 정보
    • 사전

      서비스

    • IT 자문
    • 소프트웨어 개발
    • 백엔드 개발
    • 프론트엔드 개발
    • Staff Augmentation
    • 백엔드 개발자
    • 클라우드 엔지니어
    • 데이터 엔지니어
    • 기타
    • QA 엔지니어

      리소스

    • 외부 소프트웨어 개발 파트너와의 협력에 대한 사실과 오해
    • 미국에서 유럽으로: 미국 스타트업이 유럽으로 이전을 결정하는 이유
    • 테크 오프쇼어 개발 허브 비교: 테크 오프쇼어 유럽(폴란드), 아세안(필리핀), 유라시아(터키)
    • CTO와 CIO의 주요 과제는 무엇인가요?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • 웹사이트 이용 약관

    저작권 © 2025 by The Codest. 모든 권리 보유.

    ko_KRKorean
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese es_ESSpanish nl_NLDutch etEstonian elGreek ko_KRKorean