현재 위치: > 최신 기사 목록> XSS를 방지하기 위해 HTMLSpecialchars ()와 함께 Sprintf를 사용하십시오

XSS를 방지하기 위해 HTMLSpecialchars ()와 함께 Sprintf를 사용하십시오

gitbox 2025-04-28

웹 개발에서 XSS (크로스 사이트 스크립팅 공격) 방지는 사용자 데이터의 보안을 보장하는 중요한 작업입니다. PHP는 HTMLSpecialchars () 함수를 제공하여 특수 문자를 HTML 엔티티로 변환하여 악성 스크립트 주입을 효과적으로 방지합니다. Sprintf () 함수는 종종 문자열, 특히 HTML을 동적으로 구축 할 때 문자열을 형식화하는 데 사용됩니다.

이 기사에서는 Sprintf ()htmlspecialchars ()를 사용하여 안전하고 잘 구조화 된 HTML 출력을 모두 구축하는 방법을 설명합니다.

1. XSS 란 무엇입니까?

XSS 공격은 공격자가 악의적 인 스크립트를 웹 페이지에 주입하는 것을 말합니다. 사용자가 웹 페이지를 탐색하면이 스크립트는 사용자의 브라우저에서 실행되며 쿠키를 훔치거나 페이지 컨텐츠를 변조하거나 무단 작업을 수행 할 수 있습니다.

2. htmlspecialchars 소개 ()

htmlspecialchars ()는 HTML (예 : < , > , & , " 등의 특수 문자를 HTML 엔티티로 빠져 나오는 PHP의 내장 함수입니다. 사용자 입력에 스크립트 태그가 포함되어 있더라도 실제 코드로 구문 분석되지 않습니다.

 $user_input = '<script>alert("XSS")</script>';
$safe_output = htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');

echo $safe_output;
// 산출:&lt;script&gt;alert(&quot;XSS&quot;)&lt;/script&gt;

III. sprintf () 소개

Sprintf ()는 변수를 형식의 문자열에 삽입하는 데 사용되며 탈출 처리를 자동으로 수행하지는 않습니다. 따라서 사용자가 입력 한 데이터를 출력 할 때 먼저 htmlspecialchars ()를 사용하여 처리 한 다음 sprintf () 로 전달해야합니다.

 $template = '<a href="%s">%s</a>';
$url = 'https://gitbox.net/page?search=<script>alert(1)</script>';
$link_text = '보려면 클릭하십시오';

$safe_url = htmlspecialchars($url, ENT_QUOTES, 'UTF-8');
echo sprintf($template, $safe_url, $link_text);
// 산출:<a href="https://gitbox.net/page?search=&lt;script&gt;alert(1)&lt;/script&gt;">보려면 클릭하십시오</a>

참고 : 위의 예에서는 링크_text가 정적이지만 사용자가 입력하면 htmlspecialchars () 로 처리해야합니다!

4. 실제 응용 시나리오의 예

게시판을 개발 중이며 사용자 제출 한 닉네임 및 메시지 내용이 페이지에 표시됩니다. 불안의 예는 다음과 같습니다.

 echo sprintf('<p>%s 설명하다:%s</p>', $_POST['name'], $_POST['message']);

공격자는 다음을 제출할 수 있습니다.

  • 별명 : <cript> alert ( "xss") </script>

  • 메시지를 남겨주세요 : <img src = "x"onerror = "alert ( 'xss')">

안전한 관행 :

 $name = htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8');
$message = htmlspecialchars($_POST['message'], ENT_QUOTES, 'UTF-8');

echo sprintf('<p>%s 설명하다:%s</p>', $name, $message);

이런 식으로, 사용자 입력에 관계없이 브라우저에서 실제 HTML 또는 JavaScript로 구문 분석되지 않으므로 XSS 공격을 효과적으로 방지합니다.

5. 요약

  • htmlspecialchars ()를 사용하여 사용자 입력을 피하는 것이 XSS를 방지하는 주요 방법입니다.

  • HTML 출력을 구축 할 때 Sprintf ()를 결합하여 명확한 구조 스 플라이 싱을 수행 할 수 있지만 먼저 탈출 한 다음 포맷 해야합니다.

  • 데이터를 구조와 엄격하게 구별하고 사용자 입력을 신뢰하지 않습니다.

sprintf ()htmlspecialchars ()를 합리적으로 결합함으로써 우리는 코드를 명확하고 읽을 수 있도록 일반적인 프론트 엔드 공격 위험에 효과적으로 저항 할 수 있습니다. 이 기사가 귀하의 개발 작업에 도움이되기를 바랍니다!