<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>XSS on Stacknoah</title>
    <link>https://stacknoah.com/tags/xss/</link>
    <description>Recent content in XSS on Stacknoah</description>
    <generator>Hugo</generator>
    <language>ko-kr</language>
    <lastBuildDate>Sat, 20 Jun 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://stacknoah.com/tags/xss/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Overview</title>
      <link>https://stacknoah.com/what/xss/xss-overview/</link>
      <pubDate>Sat, 20 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://stacknoah.com/what/xss/xss-overview/</guid>
      <description>&lt;h2 id=&#34;1-결함의-본질&#34;&gt;1. 결함의 본질&lt;/h2&gt;
&lt;p&gt;입력이 코드로 해석되게 만드는 결함
이 한 가지 결함이 출력 위치 3개에서 발현&lt;/p&gt;
&lt;h2 id=&#34;2-공격-대상&#34;&gt;2. 공격 대상&lt;/h2&gt;
&lt;p&gt;사용자(피해자 브라우저)
공격자 코드를 피해자 브라우저에서 실행시켜 쿠키 탈취, 화면 조작, 세션 도용 등 진행&lt;/p&gt;
&lt;h2 id=&#34;3-전제-조건&#34;&gt;3. 전제 조건&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;사용자 입력이 페이지에 출력되는 지점의 존재&lt;/li&gt;
&lt;li&gt;그 출력이 이스케이프 없이 HTML/JS로 해석&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;4-공격-경로&#34;&gt;4. 공격 경로&lt;/h2&gt;
&lt;p&gt;출력이 일어나는 위치에 따라 세 가지로 갈린다.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;종류&lt;/th&gt;
          &lt;th&gt;출력 위치&lt;/th&gt;
          &lt;th&gt;경로&lt;/th&gt;
          &lt;th&gt;판별점&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Stored&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;DB → 응답&lt;/td&gt;
          &lt;td&gt;입력(댓글·게시글) → &lt;strong&gt;DB 저장&lt;/strong&gt; → 열람 시 응답에 출력&lt;/td&gt;
          &lt;td&gt;저장됐다 나중에 나오는가?&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Reflected&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;서버 응답(즉시)&lt;/td&gt;
          &lt;td&gt;URL 파라미터에 박음 → 클릭 → 서버가 응답에 출력&lt;/td&gt;
          &lt;td&gt;서버 응답에 박혀 나오는가?&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;DOM&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;클라 JS → DOM&lt;/td&gt;
          &lt;td&gt;URL(#)에 박음 → 클릭 → JS가 읽어 DOM에 꽂음&lt;/td&gt;
          &lt;td&gt;서버 안 거치고 JS가 DOM에 넣는가?&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;5-판별점&#34;&gt;5. 판별점&lt;/h2&gt;
&lt;p&gt;입력점 찾기 → 그 값이 어디에서 출력되는지 추적 → 이에 따른 종류 결정
저장되었다 나오면 stored, 서버가 즉시 반사하면 reflected, 클라이언트 JS가 DOM에 꽂으면 DOM&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
