>  기사  >  웹 프론트엔드  >  다양한 유형의 XSS 공격

다양한 유형의 XSS 공격

WBOY
WBOY원래의
2024-02-18 19:28:061042검색

다양한 유형의 XSS 공격

XSS 공격에는 어떤 유형이 있나요? 구체적인 코드 예제가 필요합니다.

인터넷의 급속한 발전과 함께 웹 애플리케이션의 역할이 점점 더 중요해지고 있습니다. 그러나 웹 보안 위협도 증가하고 있으며, 그 중 XSS(Cross-Site Scripting Attack)는 가장 일반적인 공격 유형 중 하나입니다. XSS 공격이란 웹페이지에 악성 스크립트를 주입하는 것을 말한다. 사용자가 웹페이지를 방문하면 해당 스크립트가 사용자의 브라우저에서 실행되어 정보 유출이나 공격이 발생한다.

XSS 공격은 저장 XSS, 반영 XSS, DOM 기반 XSS의 세 가지 유형으로 나눌 수 있습니다. 아래에서는 세 가지 유형에 대해 자세히 소개하고, 데모용으로 구체적인 코드 예제를 제공합니다.

  1. Stored XSS

Stored XSS는 악성 스크립트가 대상 서버에 저장되어 있으며, 사용자가 스크립트가 포함된 페이지에 접근하면 해당 스크립트가 실행된다는 의미입니다. 공격자는 주로 입력창, 게시판 등 사용자가 입력할 수 있는 장소를 통해 주입한다.

다음은 저장된 XSS에 대한 샘플 코드입니다.

<script>
    var maliciousScript = "<script>alert('存储型XSS攻击!')</script>";
    // 将恶意脚本存储到数据库中
    saveToDatabase(maliciousScript);
</script>

위 코드는 악성 스크립트를 데이터베이스에 저장하고 나중에 데이터베이스에서 검색하여 페이지가 로드될 때 실행됩니다.

  1. Reflected XSS

Reflected XSS는 악성 스크립트가 URL을 통해 대상 웹 사이트로 전달된다는 의미입니다. 웹 사이트는 URL을 처리할 때 페이지에 스크립트를 삽입한 다음 해당 페이지를 사용자에게 반환합니다. 사용자가 악성 스크립트가 포함된 URL을 클릭하면 해당 스크립트가 사용자의 브라우저에서 실행됩니다.

다음은 Reflective XSS의 샘플 코드입니다.

<!-- 假设这是一个搜索页面 -->
<input type="text" name="keyword" value="<?php echo $_GET['keyword']; ?>">
<!-- 将用户输入的值直接输出到页面上,存在XSS风险 -->
<script>
    var keyword = "<?php echo $_GET['keyword']; ?>";
    document.write("搜索结果:" + keyword);
</script>

위 코드에서는 사용자의 검색 키워드가 URL 매개변수를 통해 서버로 전달되고, 서버는 해당 키워드를 페이지 HTML에 삽입하여 사용자에게 반환합니다. 사용자가 악의적으로 입력한 키워드에 스크립트가 포함되어 있는 경우 해당 스크립트가 실행됩니다.

  1. DOM 기반 XSS

DOM 기반 XSS는 DOM 연산을 기반으로 하는 XSS 공격 방법입니다. 공격자는 저장되고 반영된 XSS와 같이 서버에서 반환하는 콘텐츠를 수정하는 대신 페이지의 DOM 구조를 수정하여 공격을 구현합니다.

다음은 DOM 기반 XSS의 샘플 코드입니다.

<!-- 假设这是一个计算器页面 -->
<input type="text" id="number1" value="0">
<input type="text" id="number2" value="0">
<button onclick="calculate()">计算</button>
<!-- 将用户输入的值直接输出到页面上,存在XSS风险 -->
<script>
    function calculate() {
        var num1 = document.getElementById("number1").value;
        var num2 = document.getElementById("number2").value;
        var result = num1 + num2; // 用户输入可能包含恶意脚本
        document.getElementById("result").innerText = "计算结果:" + result;
    }
</script>

위 코드에서 사용자가 입력한 숫자가 페이지에 직접 출력됩니다. 사용자가 악의적으로 입력한 값에 스크립트가 포함되어 있는 경우 스크립트가 실행됩니다.

실제 개발에서는 XSS 공격을 방지하기 위해 입력 유효성 검사 및 사용자 입력 필터링, 출력 HTML 인코딩 등의 조치를 취할 수 있습니다.

간단히 말하면 XSS 공격은 저장 XSS, 반영 XSS, DOM 기반 XSS의 세 가지 유형으로 나뉩니다. 이러한 공격 유형과 해당 방어 방법을 이해하는 것은 웹 애플리케이션을 보호하는 데 중요합니다. 동시에 개발자는 웹 애플리케이션의 보안을 보장하기 위해 적시에 잠재적인 XSS 취약점을 발견하고 복구하도록 항상 경계해야 합니다.

위 내용은 다양한 유형의 XSS 공격의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.