SCW图标
英雄背景无分隔线
博客

코더들이 보안을 정복하다: 공유 및 학습 - 크로스 사이트 스크립팅 (XSS)

Jaap Karan Singh
出版日期 :2024 年 9 月 25 日
最后更新于 2026年3月9日

크로스 사이트 스크립팅 (XSS) 은 2000년대 초반부터 보안 전문가들에게 큰 버그로 작용해 왔으며, 안타깝게도 수십 년이 지난 지금도 여전히 가장 일반적인 코드 레벨 위협 중 하나로 인식되고 있습니다.이런 종류의 소프트웨어 취약점은 너무나 오랫동안 우리를 괴롭혀 왔으며, 최근 경고는 CISA 시큐어 바이 디자인 (Secure-by-Design) 운동의 일환으로 이 운동을 단번에 저지하기 위해 노력하고 있습니다.이들은 대규모로 취약성 클래스를 제거하는 것을 세계적인 사명으로 삼고 있습니다. 개발자 주도 보안에 대한 이러한 집중 조명은 변화를 가져오고 변화를 가져올 수 있습니다. 하지만 이를 위해서는 보안 성공을 위해 개발자를 준비시킨 스마트 엔터프라이즈의 노력이 필요합니다.

그렇다면 XSS란 정확히 무엇일까요?

웹 브라우저는 온라인에서 멋진 콘텐츠를 볼 수 있는 관문일 수 있지만 안타깝게도 좋은 소식만 있는 것은 아닙니다.웹 브라우저의 고유한 동작은 보안 취약점의 촉매제가 될 수 있습니다.브라우저는 특징적으로 해당 마크업을 신뢰하고 아무 문제 없이 실행하는 것으로 시작했습니다.이 기능이 악의적인 목적으로 악용되기 전까지는 괜찮고 멋지지만... 공격자들은 결국 이러한 경향을 악용하여 자신들의 사악한 목적을 달성할 방법을 찾았습니다.

크로스 사이트 스크립팅은 브라우저의 신뢰와 사용자의 무지를 이용하여 데이터를 도용하고 계정을 탈취하며 웹 사이트를 훼손합니다. 이는 매우 심각하고 빠르게 악화될 수 있는 취약점입니다.

XSS의 작동 방식, 발생할 수 있는 손상 및 예방 방법을 살펴보겠습니다.

XSS는 어떻게 작동하나요?

XSS는 신뢰할 수 없는 입력 (주로 데이터) 이 페이지의 출력으로 렌더링되지만 실행 코드로 잘못 해석될 때 발생합니다.공격자는 입력 매개 변수 내에 악성 실행 코드 (HTML 태그, JavaScript 등) 를 넣을 수 있습니다. 이 매개 변수는 브라우저로 다시 반환될 때 데이터로 표시되는 대신 실행됩니다.

위에서 언급한 것처럼 이 취약점은 데이터를 실행 코드와 구별하기 어려운 브라우저의 핵심 기능 동작으로 인해 나타났습니다.웹의 운영 모델은 다음과 같습니다.

  1. 사용자가 웹 페이지를 방문함
  2. 이 페이지는 로드할 파일과 실행할 파일을 브라우저에 알려줍니다.
  3. 브라우저는 질문 없이 페이지에 있는 내용을 실행합니다.

이 기능 덕분에 웹에서 즐기는 가장 멋진 인터랙티브 경험이 가능해졌습니다.반면, 이로 인해 비용이 많이 드는 익스플로잇과 취약점이 발생하기도 합니다.

공격자가 취약한 사이트에 악성 스크립트를 추가하면 의심할 여지 없이 실행됩니다.심층적인 조사나 탐지 조치가 마련되어 있지 않습니다.

自定义JavaScript代码可以在你的用户的浏览器中执行

XSS에는 세 가지 유형이 있습니다.

  • 저장된 XSS
  • 반사형 XSS
  • 돔 XSS

저장된 XSS 공격자가 애플리케이션의 데이터 필드 (예: 사용자의 휴대폰 번호를 저장하는 필드) 에 악성 스크립트를 영구적으로 저장할 수 있을 때 발생합니다.그러면 애플리케이션에 해당 데이터 필드가 표시될 때마다 이 개략적인 스크립트가 사용자의 브라우저로 전송됩니다.

이러한 유형의 공격은 포럼 사이트 또는 댓글 엔진에서 자주 볼 수 있습니다.공격자가 댓글에 악성 스크립트를 입력하면 bam - 해당 댓글을 보는 모든 사용자가 자신도 모르게 스크립트를 실행합니다.

반사형 XSS 사용자 입력이 사용자의 브라우저에 그대로 반영될 때 발생합니다.검색 결과를 가져오는 동안 사용자에게 “검색한 대상...” 이라는 검색 상자를 예로 들 수 있습니다.

이제 URL에 검색어를 쿼리 매개변수로 배치하여 검색이 작동한다고 가정해 보겠습니다.악의적인 공격자는 피해자에게 동일한 매개변수에 악성 스크립트가 포함된 링크를 보낼 수 있습니다. 사실 대부분의 웹 사용자는 거의 알아차리지 못할 것입니다.

피해자가 링크를 클릭하면 피싱 사이트로 리디렉션되어 자신도 모르게 해당 사이트의 비밀번호를 입력합니다.공격자가 방금 자신의 계정 키를 훔쳤다는 사실은 거의 알지 못합니다.

돔 XSS 이 취약점은 비교적 새로운 변종입니다.Angular 및 React와 같은 많은 UI 프레임워크에서 사용되는 복잡한 템플릿 구조를 활용합니다.

이러한 템플릿을 사용하면 동적 콘텐츠와 풍부한 UI 애플리케이션을 사용할 수 있습니다.잘못 사용하면 XSS 공격을 실행하는 데 사용될 수 있습니다.

자, 이제 됐어요.간단히 말해서 XSS의 범위를 알 수 있습니다.어떻게 파괴적으로 사용될 수 있는지 더 자세히 알아보도록 하겠습니다.

XSS가 왜 그렇게 위험한가요?

XSS는 사용자를 악성 사이트로 리디렉션하고 쿠키를 도용하고 세션 데이터를 찾는 데 사용할 수 있습니다.기본적으로 JavaScript가 무엇을 할 수 있든 XSS 공격도 가능합니다.

XSS 공격의 세 가지 예는 다음과 같습니다.

  1. 야후 이메일 사용자 세션 쿠키를 도난당했음 2015년에는 XSS를 사용하고 있습니다.
  2. 새미 웜 마이스페이스의 XSS 취약점을 통해 배포되었습니다.이 악성코드는 여전히 역사상 가장 빠르게 확산되고 있는 악성코드로, 단 20시간 만에 백만 명의 사용자에게 영향을 미쳤습니다.
  3. eBay는 제품 설명에 악성 스크립트를 포함하도록 허용했습니다.이로 인해 XSS 공격 이베이 사용자를 상대로.

XSS 공격은 믿을 수 없을 정도로 단순하고 매우 심각합니다.이로 인해 세션, 사용자 자격 증명 또는 민감한 데이터가 도난될 수 있습니다.평판 손상과 수익 감소는 이러한 공격의 주요 함정입니다.웹 사이트를 훼손하는 것만으로도 비즈니스에 바람직하지 않은 결과를 초래할 수 있습니다.

하지만 XSS는 당신과 같은 똑똑한 보안 전사가 물리칠 수 있습니다.해결책은 복잡하지 않으며 XSS가 널리 사용되는 익스플로잇이 된 이후 업계는 오랫동안 발전해 왔습니다.

XSS를 물리칠 수 있습니다.

XSS를 물리치는 열쇠는 상황을 이해하는 것입니다.구체적으로 말하자면, 사용자 입력이 클라이언트로 다시 렌더링되는 컨텍스트와 다시 렌더링되는 컨텍스트입니다.HTML 코드 내부 또는 자바스크립트 스니펫 내부.

사용자 입력을 브라우저로 다시 보낼 필요가 없다면 훨씬 더 좋습니다.하지만 그럴 경우 HTML로 인코딩해야 하는 경우가 많습니다.출력을 HTML로 인코딩하면 브라우저에 콘텐츠를 있는 그대로 렌더링하고 실행하지 말라고 지시합니다.

입력 유효성 검사도 중요합니다.하지만 유효성 검사 및 화이트리스팅은 아니다 완벽한 솔루션.인코딩은 몇 단계 더 나아가 브라우저에서 악성 스크립트를 실행하지 못하도록 합니다.유효성 검사 및 화이트리스팅 전략으로 포착되지 않은 부분이 무엇이든 인코딩 문제가 해결됩니다.

현재 많은 프레임워크에서 HTML 출력을 자동으로 인코딩하고 있습니다.
앵귤러, ASP.NET MVC, 및 React.js 기본 HTML 인코딩이 사용되는 프레임워크입니다.이러한 프레임워크에 특수 메서드를 호출하여 인코딩하지 않도록 구체적으로 지시해야 합니다.

대부분의 다른 프레임워크, (예: 장고스프링) 에는 코드에 쉽게 통합할 수 있는 XSS 방지를 위한 표준 라이브러리가 있습니다.

가장 큰 과제는 사용자 입력이 시스템에 들어오는 모든 방법을 스스로 분석하여 계속 주시할 수 있도록 하는 것입니다.쿼리 파라미터는 공격을 수반할 수 있으며 포스트 파라미터도 공격을 일으킬 수 있습니다.애플리케이션 전체의 데이터 흐름을 추적하고 외부에서 들어오는 데이터를 신뢰하지 마십시오.

국경 순찰대처럼 생각하세요.모든 데이터를 중지하고 검사하고 악의적으로 보이면 데이터를 허용하지 마세요.그런 다음 렌더링할 때 인코딩하여 누락된 잘못된 부분이 여전히 문제를 일으키지 않도록 하세요.

이러한 전략을 실행하면 XSS를 통한 공격으로부터 사용자를 안전하게 보호할 수 있습니다.한 번 살펴보세요 OWASP 치트 시트 데이터를 효과적으로 관리할 수 있는 더 많은 팁을 확인하세요.

XSS를 막고 보안 기술을 업그레이드하세요.

XSS는 OWASP 2017년 상위 10개 웹 보안 위험 목록에서 7위를 차지했습니다.이미 나온 지 오래되었지만 주의하지 않으면 여전히 나타날 수 있고 응용 프로그램에 문제가 발생할 수 있습니다.

개발자가 코드를 작성할 때 보안을 최우선으로 생각하는 사고방식을 구축하는 데 있어 교육은 매우 중요합니다.또한 이러한 교육은 개발자가 활발히 사용하는 언어로 실제 애플리케이션을 시뮬레이션할 때 항상 가장 효과적입니다.이를 염두에 두고 저희 사이트를 확인해 보는 것은 어떨까요? 학습 리소스 XSS에 대해 더 알고 싶으신가요?그 후에는 숙달로 이어지는 훈련과 연습을 시작할 수 있습니다.

지금 바로 XSS 취약점을 찾아 수정할 준비가 되셨나요? 자신에게 도전하세요 시큐어 코드 워리어 플랫폼에서

查看资源
查看资源

크로스 사이트 스크립팅 (XSS) 은 브라우저의 신뢰와 사용자의 무지를 이용하여 데이터를 도용하고 계정을 탈취하며 웹 사이트를 훼손합니다. 이는 매우 심각하고 순식간에 악화될 수 있는 취약점입니다.XSS의 작동 원리, 발생할 수 있는 피해, 예방 방법을 살펴보겠습니다.

您对更多内容感兴趣吗?

Jaap Karan Singh是一位安全编码布道者,首席辛格和Secure Code Warrior 的共同创始人。

了解更多

Secure Code Warrior致力于在整个软件开发生命周期中保护代码,并帮助组织建立将网络安全置于首位的文化。无论您是应用安全管理员、开发人员、首席信息安全官还是任何与安全相关的人员,我们都能协助您的组织降低与不安全代码相关的风险。

预约演示
共享对象:
领英品牌社交x 标志
作者
Jaap Karan Singh
出版日期:2024 年 9 月 25 日

Jaap Karan Singh是一位安全编码布道者,首席辛格和Secure Code Warrior 的共同创始人。

共享对象:
领英品牌社交x 标志

크로스 사이트 스크립팅 (XSS) 은 2000년대 초반부터 보안 전문가들에게 큰 버그로 작용해 왔으며, 안타깝게도 수십 년이 지난 지금도 여전히 가장 일반적인 코드 레벨 위협 중 하나로 인식되고 있습니다.이런 종류의 소프트웨어 취약점은 너무나 오랫동안 우리를 괴롭혀 왔으며, 최근 경고는 CISA 시큐어 바이 디자인 (Secure-by-Design) 운동의 일환으로 이 운동을 단번에 저지하기 위해 노력하고 있습니다.이들은 대규모로 취약성 클래스를 제거하는 것을 세계적인 사명으로 삼고 있습니다. 개발자 주도 보안에 대한 이러한 집중 조명은 변화를 가져오고 변화를 가져올 수 있습니다. 하지만 이를 위해서는 보안 성공을 위해 개발자를 준비시킨 스마트 엔터프라이즈의 노력이 필요합니다.

그렇다면 XSS란 정확히 무엇일까요?

웹 브라우저는 온라인에서 멋진 콘텐츠를 볼 수 있는 관문일 수 있지만 안타깝게도 좋은 소식만 있는 것은 아닙니다.웹 브라우저의 고유한 동작은 보안 취약점의 촉매제가 될 수 있습니다.브라우저는 특징적으로 해당 마크업을 신뢰하고 아무 문제 없이 실행하는 것으로 시작했습니다.이 기능이 악의적인 목적으로 악용되기 전까지는 괜찮고 멋지지만... 공격자들은 결국 이러한 경향을 악용하여 자신들의 사악한 목적을 달성할 방법을 찾았습니다.

크로스 사이트 스크립팅은 브라우저의 신뢰와 사용자의 무지를 이용하여 데이터를 도용하고 계정을 탈취하며 웹 사이트를 훼손합니다. 이는 매우 심각하고 빠르게 악화될 수 있는 취약점입니다.

XSS의 작동 방식, 발생할 수 있는 손상 및 예방 방법을 살펴보겠습니다.

XSS는 어떻게 작동하나요?

XSS는 신뢰할 수 없는 입력 (주로 데이터) 이 페이지의 출력으로 렌더링되지만 실행 코드로 잘못 해석될 때 발생합니다.공격자는 입력 매개 변수 내에 악성 실행 코드 (HTML 태그, JavaScript 등) 를 넣을 수 있습니다. 이 매개 변수는 브라우저로 다시 반환될 때 데이터로 표시되는 대신 실행됩니다.

위에서 언급한 것처럼 이 취약점은 데이터를 실행 코드와 구별하기 어려운 브라우저의 핵심 기능 동작으로 인해 나타났습니다.웹의 운영 모델은 다음과 같습니다.

  1. 사용자가 웹 페이지를 방문함
  2. 이 페이지는 로드할 파일과 실행할 파일을 브라우저에 알려줍니다.
  3. 브라우저는 질문 없이 페이지에 있는 내용을 실행합니다.

이 기능 덕분에 웹에서 즐기는 가장 멋진 인터랙티브 경험이 가능해졌습니다.반면, 이로 인해 비용이 많이 드는 익스플로잇과 취약점이 발생하기도 합니다.

공격자가 취약한 사이트에 악성 스크립트를 추가하면 의심할 여지 없이 실행됩니다.심층적인 조사나 탐지 조치가 마련되어 있지 않습니다.

自定义JavaScript代码可以在你的用户的浏览器中执行

XSS에는 세 가지 유형이 있습니다.

  • 저장된 XSS
  • 반사형 XSS
  • 돔 XSS

저장된 XSS 공격자가 애플리케이션의 데이터 필드 (예: 사용자의 휴대폰 번호를 저장하는 필드) 에 악성 스크립트를 영구적으로 저장할 수 있을 때 발생합니다.그러면 애플리케이션에 해당 데이터 필드가 표시될 때마다 이 개략적인 스크립트가 사용자의 브라우저로 전송됩니다.

이러한 유형의 공격은 포럼 사이트 또는 댓글 엔진에서 자주 볼 수 있습니다.공격자가 댓글에 악성 스크립트를 입력하면 bam - 해당 댓글을 보는 모든 사용자가 자신도 모르게 스크립트를 실행합니다.

반사형 XSS 사용자 입력이 사용자의 브라우저에 그대로 반영될 때 발생합니다.검색 결과를 가져오는 동안 사용자에게 “검색한 대상...” 이라는 검색 상자를 예로 들 수 있습니다.

이제 URL에 검색어를 쿼리 매개변수로 배치하여 검색이 작동한다고 가정해 보겠습니다.악의적인 공격자는 피해자에게 동일한 매개변수에 악성 스크립트가 포함된 링크를 보낼 수 있습니다. 사실 대부분의 웹 사용자는 거의 알아차리지 못할 것입니다.

피해자가 링크를 클릭하면 피싱 사이트로 리디렉션되어 자신도 모르게 해당 사이트의 비밀번호를 입력합니다.공격자가 방금 자신의 계정 키를 훔쳤다는 사실은 거의 알지 못합니다.

돔 XSS 이 취약점은 비교적 새로운 변종입니다.Angular 및 React와 같은 많은 UI 프레임워크에서 사용되는 복잡한 템플릿 구조를 활용합니다.

이러한 템플릿을 사용하면 동적 콘텐츠와 풍부한 UI 애플리케이션을 사용할 수 있습니다.잘못 사용하면 XSS 공격을 실행하는 데 사용될 수 있습니다.

자, 이제 됐어요.간단히 말해서 XSS의 범위를 알 수 있습니다.어떻게 파괴적으로 사용될 수 있는지 더 자세히 알아보도록 하겠습니다.

XSS가 왜 그렇게 위험한가요?

XSS는 사용자를 악성 사이트로 리디렉션하고 쿠키를 도용하고 세션 데이터를 찾는 데 사용할 수 있습니다.기본적으로 JavaScript가 무엇을 할 수 있든 XSS 공격도 가능합니다.

XSS 공격의 세 가지 예는 다음과 같습니다.

  1. 야후 이메일 사용자 세션 쿠키를 도난당했음 2015년에는 XSS를 사용하고 있습니다.
  2. 새미 웜 마이스페이스의 XSS 취약점을 통해 배포되었습니다.이 악성코드는 여전히 역사상 가장 빠르게 확산되고 있는 악성코드로, 단 20시간 만에 백만 명의 사용자에게 영향을 미쳤습니다.
  3. eBay는 제품 설명에 악성 스크립트를 포함하도록 허용했습니다.이로 인해 XSS 공격 이베이 사용자를 상대로.

XSS 공격은 믿을 수 없을 정도로 단순하고 매우 심각합니다.이로 인해 세션, 사용자 자격 증명 또는 민감한 데이터가 도난될 수 있습니다.평판 손상과 수익 감소는 이러한 공격의 주요 함정입니다.웹 사이트를 훼손하는 것만으로도 비즈니스에 바람직하지 않은 결과를 초래할 수 있습니다.

하지만 XSS는 당신과 같은 똑똑한 보안 전사가 물리칠 수 있습니다.해결책은 복잡하지 않으며 XSS가 널리 사용되는 익스플로잇이 된 이후 업계는 오랫동안 발전해 왔습니다.

XSS를 물리칠 수 있습니다.

XSS를 물리치는 열쇠는 상황을 이해하는 것입니다.구체적으로 말하자면, 사용자 입력이 클라이언트로 다시 렌더링되는 컨텍스트와 다시 렌더링되는 컨텍스트입니다.HTML 코드 내부 또는 자바스크립트 스니펫 내부.

사용자 입력을 브라우저로 다시 보낼 필요가 없다면 훨씬 더 좋습니다.하지만 그럴 경우 HTML로 인코딩해야 하는 경우가 많습니다.출력을 HTML로 인코딩하면 브라우저에 콘텐츠를 있는 그대로 렌더링하고 실행하지 말라고 지시합니다.

입력 유효성 검사도 중요합니다.하지만 유효성 검사 및 화이트리스팅은 아니다 완벽한 솔루션.인코딩은 몇 단계 더 나아가 브라우저에서 악성 스크립트를 실행하지 못하도록 합니다.유효성 검사 및 화이트리스팅 전략으로 포착되지 않은 부분이 무엇이든 인코딩 문제가 해결됩니다.

현재 많은 프레임워크에서 HTML 출력을 자동으로 인코딩하고 있습니다.
앵귤러, ASP.NET MVC, 및 React.js 기본 HTML 인코딩이 사용되는 프레임워크입니다.이러한 프레임워크에 특수 메서드를 호출하여 인코딩하지 않도록 구체적으로 지시해야 합니다.

대부분의 다른 프레임워크, (예: 장고스프링) 에는 코드에 쉽게 통합할 수 있는 XSS 방지를 위한 표준 라이브러리가 있습니다.

가장 큰 과제는 사용자 입력이 시스템에 들어오는 모든 방법을 스스로 분석하여 계속 주시할 수 있도록 하는 것입니다.쿼리 파라미터는 공격을 수반할 수 있으며 포스트 파라미터도 공격을 일으킬 수 있습니다.애플리케이션 전체의 데이터 흐름을 추적하고 외부에서 들어오는 데이터를 신뢰하지 마십시오.

국경 순찰대처럼 생각하세요.모든 데이터를 중지하고 검사하고 악의적으로 보이면 데이터를 허용하지 마세요.그런 다음 렌더링할 때 인코딩하여 누락된 잘못된 부분이 여전히 문제를 일으키지 않도록 하세요.

이러한 전략을 실행하면 XSS를 통한 공격으로부터 사용자를 안전하게 보호할 수 있습니다.한 번 살펴보세요 OWASP 치트 시트 데이터를 효과적으로 관리할 수 있는 더 많은 팁을 확인하세요.

XSS를 막고 보안 기술을 업그레이드하세요.

XSS는 OWASP 2017년 상위 10개 웹 보안 위험 목록에서 7위를 차지했습니다.이미 나온 지 오래되었지만 주의하지 않으면 여전히 나타날 수 있고 응용 프로그램에 문제가 발생할 수 있습니다.

개발자가 코드를 작성할 때 보안을 최우선으로 생각하는 사고방식을 구축하는 데 있어 교육은 매우 중요합니다.또한 이러한 교육은 개발자가 활발히 사용하는 언어로 실제 애플리케이션을 시뮬레이션할 때 항상 가장 효과적입니다.이를 염두에 두고 저희 사이트를 확인해 보는 것은 어떨까요? 학습 리소스 XSS에 대해 더 알고 싶으신가요?그 후에는 숙달로 이어지는 훈련과 연습을 시작할 수 있습니다.

지금 바로 XSS 취약점을 찾아 수정할 준비가 되셨나요? 자신에게 도전하세요 시큐어 코드 워리어 플랫폼에서

查看资源
查看资源

要下载报告,请填写以下表格。

我们请求您的同意,以便向您发送有关本公司产品及/或相关安全编码主题的信息。我们始终以最高标准谨慎处理您的个人信息,且绝不会出于营销目的向其他公司出售您的信息。

提交
scw 成功图标
SCW 错误图标
要提交表单,请启用'Analytics' Cookie。完成后,您可随时将其重新禁用。

크로스 사이트 스크립팅 (XSS) 은 2000년대 초반부터 보안 전문가들에게 큰 버그로 작용해 왔으며, 안타깝게도 수십 년이 지난 지금도 여전히 가장 일반적인 코드 레벨 위협 중 하나로 인식되고 있습니다.이런 종류의 소프트웨어 취약점은 너무나 오랫동안 우리를 괴롭혀 왔으며, 최근 경고는 CISA 시큐어 바이 디자인 (Secure-by-Design) 운동의 일환으로 이 운동을 단번에 저지하기 위해 노력하고 있습니다.이들은 대규모로 취약성 클래스를 제거하는 것을 세계적인 사명으로 삼고 있습니다. 개발자 주도 보안에 대한 이러한 집중 조명은 변화를 가져오고 변화를 가져올 수 있습니다. 하지만 이를 위해서는 보안 성공을 위해 개발자를 준비시킨 스마트 엔터프라이즈의 노력이 필요합니다.

그렇다면 XSS란 정확히 무엇일까요?

웹 브라우저는 온라인에서 멋진 콘텐츠를 볼 수 있는 관문일 수 있지만 안타깝게도 좋은 소식만 있는 것은 아닙니다.웹 브라우저의 고유한 동작은 보안 취약점의 촉매제가 될 수 있습니다.브라우저는 특징적으로 해당 마크업을 신뢰하고 아무 문제 없이 실행하는 것으로 시작했습니다.이 기능이 악의적인 목적으로 악용되기 전까지는 괜찮고 멋지지만... 공격자들은 결국 이러한 경향을 악용하여 자신들의 사악한 목적을 달성할 방법을 찾았습니다.

크로스 사이트 스크립팅은 브라우저의 신뢰와 사용자의 무지를 이용하여 데이터를 도용하고 계정을 탈취하며 웹 사이트를 훼손합니다. 이는 매우 심각하고 빠르게 악화될 수 있는 취약점입니다.

XSS의 작동 방식, 발생할 수 있는 손상 및 예방 방법을 살펴보겠습니다.

XSS는 어떻게 작동하나요?

XSS는 신뢰할 수 없는 입력 (주로 데이터) 이 페이지의 출력으로 렌더링되지만 실행 코드로 잘못 해석될 때 발생합니다.공격자는 입력 매개 변수 내에 악성 실행 코드 (HTML 태그, JavaScript 등) 를 넣을 수 있습니다. 이 매개 변수는 브라우저로 다시 반환될 때 데이터로 표시되는 대신 실행됩니다.

위에서 언급한 것처럼 이 취약점은 데이터를 실행 코드와 구별하기 어려운 브라우저의 핵심 기능 동작으로 인해 나타났습니다.웹의 운영 모델은 다음과 같습니다.

  1. 사용자가 웹 페이지를 방문함
  2. 이 페이지는 로드할 파일과 실행할 파일을 브라우저에 알려줍니다.
  3. 브라우저는 질문 없이 페이지에 있는 내용을 실행합니다.

이 기능 덕분에 웹에서 즐기는 가장 멋진 인터랙티브 경험이 가능해졌습니다.반면, 이로 인해 비용이 많이 드는 익스플로잇과 취약점이 발생하기도 합니다.

공격자가 취약한 사이트에 악성 스크립트를 추가하면 의심할 여지 없이 실행됩니다.심층적인 조사나 탐지 조치가 마련되어 있지 않습니다.

自定义JavaScript代码可以在你的用户的浏览器中执行

XSS에는 세 가지 유형이 있습니다.

  • 저장된 XSS
  • 반사형 XSS
  • 돔 XSS

저장된 XSS 공격자가 애플리케이션의 데이터 필드 (예: 사용자의 휴대폰 번호를 저장하는 필드) 에 악성 스크립트를 영구적으로 저장할 수 있을 때 발생합니다.그러면 애플리케이션에 해당 데이터 필드가 표시될 때마다 이 개략적인 스크립트가 사용자의 브라우저로 전송됩니다.

이러한 유형의 공격은 포럼 사이트 또는 댓글 엔진에서 자주 볼 수 있습니다.공격자가 댓글에 악성 스크립트를 입력하면 bam - 해당 댓글을 보는 모든 사용자가 자신도 모르게 스크립트를 실행합니다.

반사형 XSS 사용자 입력이 사용자의 브라우저에 그대로 반영될 때 발생합니다.검색 결과를 가져오는 동안 사용자에게 “검색한 대상...” 이라는 검색 상자를 예로 들 수 있습니다.

이제 URL에 검색어를 쿼리 매개변수로 배치하여 검색이 작동한다고 가정해 보겠습니다.악의적인 공격자는 피해자에게 동일한 매개변수에 악성 스크립트가 포함된 링크를 보낼 수 있습니다. 사실 대부분의 웹 사용자는 거의 알아차리지 못할 것입니다.

피해자가 링크를 클릭하면 피싱 사이트로 리디렉션되어 자신도 모르게 해당 사이트의 비밀번호를 입력합니다.공격자가 방금 자신의 계정 키를 훔쳤다는 사실은 거의 알지 못합니다.

돔 XSS 이 취약점은 비교적 새로운 변종입니다.Angular 및 React와 같은 많은 UI 프레임워크에서 사용되는 복잡한 템플릿 구조를 활용합니다.

이러한 템플릿을 사용하면 동적 콘텐츠와 풍부한 UI 애플리케이션을 사용할 수 있습니다.잘못 사용하면 XSS 공격을 실행하는 데 사용될 수 있습니다.

자, 이제 됐어요.간단히 말해서 XSS의 범위를 알 수 있습니다.어떻게 파괴적으로 사용될 수 있는지 더 자세히 알아보도록 하겠습니다.

XSS가 왜 그렇게 위험한가요?

XSS는 사용자를 악성 사이트로 리디렉션하고 쿠키를 도용하고 세션 데이터를 찾는 데 사용할 수 있습니다.기본적으로 JavaScript가 무엇을 할 수 있든 XSS 공격도 가능합니다.

XSS 공격의 세 가지 예는 다음과 같습니다.

  1. 야후 이메일 사용자 세션 쿠키를 도난당했음 2015년에는 XSS를 사용하고 있습니다.
  2. 새미 웜 마이스페이스의 XSS 취약점을 통해 배포되었습니다.이 악성코드는 여전히 역사상 가장 빠르게 확산되고 있는 악성코드로, 단 20시간 만에 백만 명의 사용자에게 영향을 미쳤습니다.
  3. eBay는 제품 설명에 악성 스크립트를 포함하도록 허용했습니다.이로 인해 XSS 공격 이베이 사용자를 상대로.

XSS 공격은 믿을 수 없을 정도로 단순하고 매우 심각합니다.이로 인해 세션, 사용자 자격 증명 또는 민감한 데이터가 도난될 수 있습니다.평판 손상과 수익 감소는 이러한 공격의 주요 함정입니다.웹 사이트를 훼손하는 것만으로도 비즈니스에 바람직하지 않은 결과를 초래할 수 있습니다.

하지만 XSS는 당신과 같은 똑똑한 보안 전사가 물리칠 수 있습니다.해결책은 복잡하지 않으며 XSS가 널리 사용되는 익스플로잇이 된 이후 업계는 오랫동안 발전해 왔습니다.

XSS를 물리칠 수 있습니다.

XSS를 물리치는 열쇠는 상황을 이해하는 것입니다.구체적으로 말하자면, 사용자 입력이 클라이언트로 다시 렌더링되는 컨텍스트와 다시 렌더링되는 컨텍스트입니다.HTML 코드 내부 또는 자바스크립트 스니펫 내부.

사용자 입력을 브라우저로 다시 보낼 필요가 없다면 훨씬 더 좋습니다.하지만 그럴 경우 HTML로 인코딩해야 하는 경우가 많습니다.출력을 HTML로 인코딩하면 브라우저에 콘텐츠를 있는 그대로 렌더링하고 실행하지 말라고 지시합니다.

입력 유효성 검사도 중요합니다.하지만 유효성 검사 및 화이트리스팅은 아니다 완벽한 솔루션.인코딩은 몇 단계 더 나아가 브라우저에서 악성 스크립트를 실행하지 못하도록 합니다.유효성 검사 및 화이트리스팅 전략으로 포착되지 않은 부분이 무엇이든 인코딩 문제가 해결됩니다.

현재 많은 프레임워크에서 HTML 출력을 자동으로 인코딩하고 있습니다.
앵귤러, ASP.NET MVC, 및 React.js 기본 HTML 인코딩이 사용되는 프레임워크입니다.이러한 프레임워크에 특수 메서드를 호출하여 인코딩하지 않도록 구체적으로 지시해야 합니다.

대부분의 다른 프레임워크, (예: 장고스프링) 에는 코드에 쉽게 통합할 수 있는 XSS 방지를 위한 표준 라이브러리가 있습니다.

가장 큰 과제는 사용자 입력이 시스템에 들어오는 모든 방법을 스스로 분석하여 계속 주시할 수 있도록 하는 것입니다.쿼리 파라미터는 공격을 수반할 수 있으며 포스트 파라미터도 공격을 일으킬 수 있습니다.애플리케이션 전체의 데이터 흐름을 추적하고 외부에서 들어오는 데이터를 신뢰하지 마십시오.

국경 순찰대처럼 생각하세요.모든 데이터를 중지하고 검사하고 악의적으로 보이면 데이터를 허용하지 마세요.그런 다음 렌더링할 때 인코딩하여 누락된 잘못된 부분이 여전히 문제를 일으키지 않도록 하세요.

이러한 전략을 실행하면 XSS를 통한 공격으로부터 사용자를 안전하게 보호할 수 있습니다.한 번 살펴보세요 OWASP 치트 시트 데이터를 효과적으로 관리할 수 있는 더 많은 팁을 확인하세요.

XSS를 막고 보안 기술을 업그레이드하세요.

XSS는 OWASP 2017년 상위 10개 웹 보안 위험 목록에서 7위를 차지했습니다.이미 나온 지 오래되었지만 주의하지 않으면 여전히 나타날 수 있고 응용 프로그램에 문제가 발생할 수 있습니다.

개발자가 코드를 작성할 때 보안을 최우선으로 생각하는 사고방식을 구축하는 데 있어 교육은 매우 중요합니다.또한 이러한 교육은 개발자가 활발히 사용하는 언어로 실제 애플리케이션을 시뮬레이션할 때 항상 가장 효과적입니다.이를 염두에 두고 저희 사이트를 확인해 보는 것은 어떨까요? 학습 리소스 XSS에 대해 더 알고 싶으신가요?그 후에는 숙달로 이어지는 훈련과 연습을 시작할 수 있습니다.

지금 바로 XSS 취약점을 찾아 수정할 준비가 되셨나요? 자신에게 도전하세요 시큐어 코드 워리어 플랫폼에서

观看网络研讨会
开始
了解更多

点击下方链接下载此资源的PDF文件。

Secure Code Warrior致力于在整个软件开发生命周期中保护代码,并帮助组织建立将网络安全置于首位的文化。无论您是应用安全管理员、开发人员、首席信息安全官还是任何与安全相关的人员,我们都能协助您的组织降低与不安全代码相关的风险。

查看报告预约演示
查看资源
共享对象:
领英品牌社交x 标志
您对更多内容感兴趣吗?

共享对象:
领英品牌社交x 标志
作者
Jaap Karan Singh
出版日期:2024 年 9 月 25 日

Jaap Karan Singh是一位安全编码布道者,首席辛格和Secure Code Warrior 的共同创始人。

共享对象:
领英品牌社交x 标志

크로스 사이트 스크립팅 (XSS) 은 2000년대 초반부터 보안 전문가들에게 큰 버그로 작용해 왔으며, 안타깝게도 수십 년이 지난 지금도 여전히 가장 일반적인 코드 레벨 위협 중 하나로 인식되고 있습니다.이런 종류의 소프트웨어 취약점은 너무나 오랫동안 우리를 괴롭혀 왔으며, 최근 경고는 CISA 시큐어 바이 디자인 (Secure-by-Design) 운동의 일환으로 이 운동을 단번에 저지하기 위해 노력하고 있습니다.이들은 대규모로 취약성 클래스를 제거하는 것을 세계적인 사명으로 삼고 있습니다. 개발자 주도 보안에 대한 이러한 집중 조명은 변화를 가져오고 변화를 가져올 수 있습니다. 하지만 이를 위해서는 보안 성공을 위해 개발자를 준비시킨 스마트 엔터프라이즈의 노력이 필요합니다.

그렇다면 XSS란 정확히 무엇일까요?

웹 브라우저는 온라인에서 멋진 콘텐츠를 볼 수 있는 관문일 수 있지만 안타깝게도 좋은 소식만 있는 것은 아닙니다.웹 브라우저의 고유한 동작은 보안 취약점의 촉매제가 될 수 있습니다.브라우저는 특징적으로 해당 마크업을 신뢰하고 아무 문제 없이 실행하는 것으로 시작했습니다.이 기능이 악의적인 목적으로 악용되기 전까지는 괜찮고 멋지지만... 공격자들은 결국 이러한 경향을 악용하여 자신들의 사악한 목적을 달성할 방법을 찾았습니다.

크로스 사이트 스크립팅은 브라우저의 신뢰와 사용자의 무지를 이용하여 데이터를 도용하고 계정을 탈취하며 웹 사이트를 훼손합니다. 이는 매우 심각하고 빠르게 악화될 수 있는 취약점입니다.

XSS의 작동 방식, 발생할 수 있는 손상 및 예방 방법을 살펴보겠습니다.

XSS는 어떻게 작동하나요?

XSS는 신뢰할 수 없는 입력 (주로 데이터) 이 페이지의 출력으로 렌더링되지만 실행 코드로 잘못 해석될 때 발생합니다.공격자는 입력 매개 변수 내에 악성 실행 코드 (HTML 태그, JavaScript 등) 를 넣을 수 있습니다. 이 매개 변수는 브라우저로 다시 반환될 때 데이터로 표시되는 대신 실행됩니다.

위에서 언급한 것처럼 이 취약점은 데이터를 실행 코드와 구별하기 어려운 브라우저의 핵심 기능 동작으로 인해 나타났습니다.웹의 운영 모델은 다음과 같습니다.

  1. 사용자가 웹 페이지를 방문함
  2. 이 페이지는 로드할 파일과 실행할 파일을 브라우저에 알려줍니다.
  3. 브라우저는 질문 없이 페이지에 있는 내용을 실행합니다.

이 기능 덕분에 웹에서 즐기는 가장 멋진 인터랙티브 경험이 가능해졌습니다.반면, 이로 인해 비용이 많이 드는 익스플로잇과 취약점이 발생하기도 합니다.

공격자가 취약한 사이트에 악성 스크립트를 추가하면 의심할 여지 없이 실행됩니다.심층적인 조사나 탐지 조치가 마련되어 있지 않습니다.

自定义JavaScript代码可以在你的用户的浏览器中执行

XSS에는 세 가지 유형이 있습니다.

  • 저장된 XSS
  • 반사형 XSS
  • 돔 XSS

저장된 XSS 공격자가 애플리케이션의 데이터 필드 (예: 사용자의 휴대폰 번호를 저장하는 필드) 에 악성 스크립트를 영구적으로 저장할 수 있을 때 발생합니다.그러면 애플리케이션에 해당 데이터 필드가 표시될 때마다 이 개략적인 스크립트가 사용자의 브라우저로 전송됩니다.

이러한 유형의 공격은 포럼 사이트 또는 댓글 엔진에서 자주 볼 수 있습니다.공격자가 댓글에 악성 스크립트를 입력하면 bam - 해당 댓글을 보는 모든 사용자가 자신도 모르게 스크립트를 실행합니다.

반사형 XSS 사용자 입력이 사용자의 브라우저에 그대로 반영될 때 발생합니다.검색 결과를 가져오는 동안 사용자에게 “검색한 대상...” 이라는 검색 상자를 예로 들 수 있습니다.

이제 URL에 검색어를 쿼리 매개변수로 배치하여 검색이 작동한다고 가정해 보겠습니다.악의적인 공격자는 피해자에게 동일한 매개변수에 악성 스크립트가 포함된 링크를 보낼 수 있습니다. 사실 대부분의 웹 사용자는 거의 알아차리지 못할 것입니다.

피해자가 링크를 클릭하면 피싱 사이트로 리디렉션되어 자신도 모르게 해당 사이트의 비밀번호를 입력합니다.공격자가 방금 자신의 계정 키를 훔쳤다는 사실은 거의 알지 못합니다.

돔 XSS 이 취약점은 비교적 새로운 변종입니다.Angular 및 React와 같은 많은 UI 프레임워크에서 사용되는 복잡한 템플릿 구조를 활용합니다.

이러한 템플릿을 사용하면 동적 콘텐츠와 풍부한 UI 애플리케이션을 사용할 수 있습니다.잘못 사용하면 XSS 공격을 실행하는 데 사용될 수 있습니다.

자, 이제 됐어요.간단히 말해서 XSS의 범위를 알 수 있습니다.어떻게 파괴적으로 사용될 수 있는지 더 자세히 알아보도록 하겠습니다.

XSS가 왜 그렇게 위험한가요?

XSS는 사용자를 악성 사이트로 리디렉션하고 쿠키를 도용하고 세션 데이터를 찾는 데 사용할 수 있습니다.기본적으로 JavaScript가 무엇을 할 수 있든 XSS 공격도 가능합니다.

XSS 공격의 세 가지 예는 다음과 같습니다.

  1. 야후 이메일 사용자 세션 쿠키를 도난당했음 2015년에는 XSS를 사용하고 있습니다.
  2. 새미 웜 마이스페이스의 XSS 취약점을 통해 배포되었습니다.이 악성코드는 여전히 역사상 가장 빠르게 확산되고 있는 악성코드로, 단 20시간 만에 백만 명의 사용자에게 영향을 미쳤습니다.
  3. eBay는 제품 설명에 악성 스크립트를 포함하도록 허용했습니다.이로 인해 XSS 공격 이베이 사용자를 상대로.

XSS 공격은 믿을 수 없을 정도로 단순하고 매우 심각합니다.이로 인해 세션, 사용자 자격 증명 또는 민감한 데이터가 도난될 수 있습니다.평판 손상과 수익 감소는 이러한 공격의 주요 함정입니다.웹 사이트를 훼손하는 것만으로도 비즈니스에 바람직하지 않은 결과를 초래할 수 있습니다.

하지만 XSS는 당신과 같은 똑똑한 보안 전사가 물리칠 수 있습니다.해결책은 복잡하지 않으며 XSS가 널리 사용되는 익스플로잇이 된 이후 업계는 오랫동안 발전해 왔습니다.

XSS를 물리칠 수 있습니다.

XSS를 물리치는 열쇠는 상황을 이해하는 것입니다.구체적으로 말하자면, 사용자 입력이 클라이언트로 다시 렌더링되는 컨텍스트와 다시 렌더링되는 컨텍스트입니다.HTML 코드 내부 또는 자바스크립트 스니펫 내부.

사용자 입력을 브라우저로 다시 보낼 필요가 없다면 훨씬 더 좋습니다.하지만 그럴 경우 HTML로 인코딩해야 하는 경우가 많습니다.출력을 HTML로 인코딩하면 브라우저에 콘텐츠를 있는 그대로 렌더링하고 실행하지 말라고 지시합니다.

입력 유효성 검사도 중요합니다.하지만 유효성 검사 및 화이트리스팅은 아니다 완벽한 솔루션.인코딩은 몇 단계 더 나아가 브라우저에서 악성 스크립트를 실행하지 못하도록 합니다.유효성 검사 및 화이트리스팅 전략으로 포착되지 않은 부분이 무엇이든 인코딩 문제가 해결됩니다.

현재 많은 프레임워크에서 HTML 출력을 자동으로 인코딩하고 있습니다.
앵귤러, ASP.NET MVC, 및 React.js 기본 HTML 인코딩이 사용되는 프레임워크입니다.이러한 프레임워크에 특수 메서드를 호출하여 인코딩하지 않도록 구체적으로 지시해야 합니다.

대부분의 다른 프레임워크, (예: 장고스프링) 에는 코드에 쉽게 통합할 수 있는 XSS 방지를 위한 표준 라이브러리가 있습니다.

가장 큰 과제는 사용자 입력이 시스템에 들어오는 모든 방법을 스스로 분석하여 계속 주시할 수 있도록 하는 것입니다.쿼리 파라미터는 공격을 수반할 수 있으며 포스트 파라미터도 공격을 일으킬 수 있습니다.애플리케이션 전체의 데이터 흐름을 추적하고 외부에서 들어오는 데이터를 신뢰하지 마십시오.

국경 순찰대처럼 생각하세요.모든 데이터를 중지하고 검사하고 악의적으로 보이면 데이터를 허용하지 마세요.그런 다음 렌더링할 때 인코딩하여 누락된 잘못된 부분이 여전히 문제를 일으키지 않도록 하세요.

이러한 전략을 실행하면 XSS를 통한 공격으로부터 사용자를 안전하게 보호할 수 있습니다.한 번 살펴보세요 OWASP 치트 시트 데이터를 효과적으로 관리할 수 있는 더 많은 팁을 확인하세요.

XSS를 막고 보안 기술을 업그레이드하세요.

XSS는 OWASP 2017년 상위 10개 웹 보안 위험 목록에서 7위를 차지했습니다.이미 나온 지 오래되었지만 주의하지 않으면 여전히 나타날 수 있고 응용 프로그램에 문제가 발생할 수 있습니다.

개발자가 코드를 작성할 때 보안을 최우선으로 생각하는 사고방식을 구축하는 데 있어 교육은 매우 중요합니다.또한 이러한 교육은 개발자가 활발히 사용하는 언어로 실제 애플리케이션을 시뮬레이션할 때 항상 가장 효과적입니다.이를 염두에 두고 저희 사이트를 확인해 보는 것은 어떨까요? 학습 리소스 XSS에 대해 더 알고 싶으신가요?그 후에는 숙달로 이어지는 훈련과 연습을 시작할 수 있습니다.

지금 바로 XSS 취약점을 찾아 수정할 준비가 되셨나요? 자신에게 도전하세요 시큐어 코드 워리어 플랫폼에서

目录

查看资源
您对更多内容感兴趣吗?

Jaap Karan Singh是一位安全编码布道者,首席辛格和Secure Code Warrior 的共同创始人。

了解更多

Secure Code Warrior致力于在整个软件开发生命周期中保护代码,并帮助组织建立将网络安全置于首位的文化。无论您是应用安全管理员、开发人员、首席信息安全官还是任何与安全相关的人员,我们都能协助您的组织降低与不安全代码相关的风险。

预约演示下载
共享对象:
领英品牌社交x 标志
资源中心

有助于开始的资源

更多帖子
资源中心

有助于开始的资源

更多帖子