Skip to content

결과 화면 XSS 출력 인코딩 적용 - #3

Open
hchanhi wants to merge 1 commit into
mainfrom
security/result-page-xss
Open

결과 화면 XSS 출력 인코딩 적용#3
hchanhi wants to merge 1 commit into
mainfrom
security/result-page-xss

Conversation

@hchanhi

@hchanhi hchanhi commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

변경 내용

인라인 <%= %>로 사용자 입력(Request.Form)을 인코딩 없이 출력하던 결과 화면에 출력 인코딩을 적용했습니다.

  • pay_showResult.aspx: 응답 표시 값(HTML 컨텍스트)에 Server.HtmlEncode 적용.
  • pay_receiveResult.aspx:
    • _PAY_RESULT 자바스크립트 문자열 컨텍스트에 HttpUtility.JavaScriptStringEncode 적용.
    • HTML 테이블 출력에 Server.HtmlEncode 적용.
  • pay_form.aspx: REMOTE_ADDR를 자바스크립트 문자열에 넣던 부분에 HttpUtility.JavaScriptStringEncode 적용.

손대지 않은 것

  • 출력 값은 모두 Request.Form[...]에서 직접 오는 원본 값이므로(별도 인코딩 계층 없음) 이번 인코딩이 유일한 처리이며 이중 인코딩은 발생하지 않습니다.
  • PG_MID, PAYMENT_SERVER 등 상수 출력은 사용자 입력이 아니므로 변경하지 않았습니다.
  • 결과 페이지 code-behind(cancel_showResult.aspx.cs)의 Label.Text 출력은 ASP.NET이 자동 HTML 인코딩하므로 안전하여 변경하지 않았습니다.
  • 로그 출력(연동 확인용)은 샘플의 학습 목적을 위해 그대로 유지했습니다.

검증

이 샘플은 ASP.NET WebForms(.NET Framework)라 리눅스/macOS 환경에서 웹앱 전체를 실행할 수 없어, 적용한 인코딩 함수의 동작을 .NET 콘솔로 단위 검증했습니다.

  • HttpUtility.HtmlEncode / HttpUtility.JavaScriptStringEncode 모두 정상 값(영문 코드, 숫자, 한글)에 대해 원본과 동일한 출력(무영향) 확인.
  • 공격 문자열("</script><script>...&)에 대해 HTML은 엔티티로, JS는 \uXXXX로 이스케이프되어 원시 <script>/</script>가 사라지는 것 확인.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant