XSS(교차 사이트 스크립팅) 및 PHP 애플리케이션에서 이를 방지하는 방법

웹 애플리케이션 보안은 모든 웹 기반 애플리케이션의 핵심 구성 요소입니다.
웹 브라우저의 보안 결함으로 인해 XSS는 처음에 크로스 사이트로 알려졌습니다. 브라우저에서 두 사이트 모두에 대한 창을 활성화한 경우 XSS를 사용하여 한 사이트에서 다른 사이트로 정보/데이터를 이동할 수 있습니다.
이 게시물에서는 XSS에 대한 세부 정보와 PHP 웹 앱에서 XSS 공격을 방지하는 방법을 안내합니다.

XSS(교차 사이트 스크립팅)



XSS란 무엇입니까?
웹 클라이언트에 의한 의도하지 않은 원격 코드 실행입니다. 공격자는 XSS를 사용하여 의심하지 않는 사용자에게 악의적인 스크립트를 보낼 수 있습니다.
모든 웹 응용 프로그램은 사용자로부터 입력을 받아 웹 페이지에 직접 출력하는 경우 XSS에 노출될 수 있습니다.

XSS는 어떻게 발생하는가
XSS는 일반적으로 웹 양식 또는 웹 페이지의 하이퍼링크를 사용하여 추가됩니다. JavaScript, PHP, HTML 및 VBScript를 포함한 모든 클라이언트 측 언어에서 이 코드를 사용할 수 있습니다.

클라이언트에서 오는 데이터 입력은 절대 신뢰할 수 없습니다. GET, POST 및 COOKIE 값은 무엇이든 될 수 있으므로 출력하기 전에 유효성을 검사해야 합니다.
PHP는 이를 위한 몇 가지 방법을 제공합니다.

1️⃣HTML 인코딩:



PHP htmlspecialchars 함수는 HTML 특수 문자를 HTML 인코딩으로 변환하므로 표준 HTML로 처리되지 않습니다.
구문

<?php
 // GET
 $input = htmlspecialchars($_GET['input']);
 // POST
 $input = htmlspecialchars($_POST['input'])
?>


2️⃣URL 인코딩:



동적으로 생성된 URL을 출력할 때 PHP는 urlencode 기능을 제공하여 유효성이 검사되거나 삭제된 URL을 안전하게 출력합니다.
구문

<?php
 $input = urlencode($_GET['input']);
?>


악의적인 입력은 인코딩된 URL 매개변수로 변환됩니다.

3️⃣타사 PHP 라이브러리:



XSS 방지를 지원하는 데 일반적으로 사용되는 여러 타사 PHP 라이브러리가 있습니다.
예시👇
HTML 정수기 – here
PHP 안티 XSS – here
htmlawed – here

🗝PHP 필터 기능 사용.



이 기능은 여러 가지 방법으로 PHP 스크립트로 전송된 데이터를 삭제하거나 유효성을 검사합니다.

참고✍



PHP STRIP_TAGS()는 데이터 삭제에만 사용하면 안 됩니다. strip_tags()는 HTML 태그 사이의 내용을 제거하고 HTML 엔터티 속성 내에 존재하는 XSS 인스턴스를 방지할 수 없습니다. strip_tags()는 쌍을 이루지 않은 닫는 꺾쇠 괄호도 필터링하거나 인코딩하지 않습니다.

결론



교차 사이트 스크립팅은 다재다능한 공격입니다. 사용자 자격 증명, 쿠키 및 경제적 가치가 있는 데이터를 포함하여 매우 민감한 데이터를 훔치는 데 사용될 수 있습니다.

XSS를 방지할 수 있는 다른 방법은 무엇입니까? 아래 댓글에 아이디어를 공유해주세요👇

당신은 당신을 위해 더 많은 글을 계속 쓸 수 있도록 나를 지원할 수 있습니다 🚀❤


좋은 웹페이지 즐겨찾기