현재 위치: > 최신 기사 목록> htmlspecialchars ()를 결합하여 HTML-SAFE 데이터를 출력합니다

htmlspecialchars ()를 결합하여 HTML-SAFE 데이터를 출력합니다

M66 2025-05-28

데이터베이스 쿼리를 실행하고 PHP 및 MySQLI를 사용하여 HTML 페이지에 데이터를 출력 할 때 XSS (크로스 사이트 스크립팅 공격) 취약점을 피해야합니다. 이 유형의 취약점은 일반적으로 탈출이나 필터링없이 데이터베이스의 컨텐츠를 웹 페이지에 직접 출력 할 때 발생합니다.

콘텐츠를 안전하게 출력하려면 HTMLSpecialchars ()가 매우 유용한 도구입니다. HTML 특수 문자 (예 : < , > , & , " 등)를 HTML 엔티티로 변환하여 악의적 인 스크립트가 페이지에 주입되는 것을 방지합니다. mysqli_result 객체와 결합하여 데이터베이스 쿼리 결과를 얻을 수 있습니다. 콘텐츠를 안전하게 표시 할 수 있습니다.

다음은 htmlspecialchars () 와 함께 mysqli_result를 사용하는 방법을 보여주는 구체적인 예입니다.

 <?php
// 데이터베이스 연결
$mysqli = new mysqli("localhost", "username", "password", "database");

// 연결을 확인하십시오
if ($mysqli->connect_errno) {
    die("연결이 실패했습니다: " . $mysqli->connect_error);
}

// 쿼리를 실행하십시오
$sql = "SELECT id, title, content FROM articles";
$result = $mysqli->query($sql);

if ($result && $result->num_rows > 0) {
    echo "<h1>기사 목록</h1>";
    echo "<ul>";
    while ($row = $result->fetch_assoc()) {
        // 사용 htmlspecialchars 탈출 출력
        $title = htmlspecialchars($row['title'], ENT_QUOTES, 'UTF-8');
        $content = htmlspecialchars($row['content'], ENT_QUOTES, 'UTF-8');

        // 이 기사에 자세한 링크가 있다고 가정합니다
        $articleUrl = "https://m66.net/article.php?id=" . urlencode($row['id']);

        echo "<li>";
        echo "<a href=\"$articleUrl\">$title</a><br>";
        echo "<p>$content</p>";
        echo "</li>";
    }
    echo "</ul>";
} else {
    echo "발견 된 기사가 없습니다。";
}

// 연결을 닫으십시오
$mysqli->close();
?>

키 포인트 설명

  1. htmlspecialchars () 사용

    • ENT_QUOTES 매개 변수는 단일 및 이중 인용문이 모두 피해를 보장합니다.

    • 'UTF-8'은 인코딩으로 인한 우회 문제를 피하기 위해 문자 인코딩을 지정합니다.

  2. URL을 구성 할 때는 urlencode ()를 사용하십시오
    URL에 매개 변수를 삽입 해야하는 경우 urlencode ()를 사용하여 특수 문자가 URL 구조가 손상되지 않도록하십시오.

  3. html <br>에서 직접 처리되지 않은 데이터를 스플릿하지 마십시오 데이터베이스 필드 값의 직접 출력은 매우 위험하며 제대로 처리해야합니다.

요약

실제 프로젝트에서는 모든 데이터 출력을 브라우저로 탈출하는 습관을 개발하는 것이 보안 개발의 기본 요구 사항입니다. mysqli_resulthtmlspecialchars () 의 쿼리 결과를 결합하여 대부분의 XSS 공격을 효과적으로 방지하고 웹 사이트 및 사용자의 보안을 보장 할 수 있습니다.

출력 기능 캡슐화 또는 템플릿 엔진 사용과 같은 추가 최적화가 필요한 부품이있는 경우 구성 할 수도 있습니다. 더 완전한 패키지 예제를 작성 하시겠습니까?

  • 관련 태그:

    HTML