PHP에서 HTML 엔티티의 탈출은 특히 웹 페이지를 동적으로 생성 할 때 일반적인 요구 사항입니다. 적절한 탈출없이 XSS 공격과 같은 보안 문제가 발생할 수 있습니다. get_html_translation_table 함수는 HTML 엔티티의 올바른 탈출을 구현하는 데 도움이되는 매우 유용한 도구입니다.
HTML 엔티티는 시작 하고 끝나는 특수 문자입니다 . 특정 기호 또는 문자를 나타냅니다. 예를 들어:
& amp; 및 기호를 나타냅니다
& lt; < 기호를 나타냅니다
& gt; 대표 > 기호
"대표 " 상징
& apos; ' 기호를 나타냅니다
HTML에 사용자 입력 데이터를 삽입 할 때는 이러한 특수 문자가 올바르게 피해야하는지 확인해야합니다. 그렇지 않으면 보안 취약점이 트리거 될 수 있습니다.
get_html_translation_table 함수는 HTML 엔티티 및 문자 서신을 포함하는 매핑 테이블을 반환 할 수 있습니다. 이 테이블을 사용하여 특정 문자를 피할 수 있습니다.
get_html_translation_table(int $table = HTML_ENTITIES, int $flags = ENT_COMPAT, string|null $encoding = null): array
$ 테이블 : 반환 된 번역 테이블의 유형을 정의합니다. 일반적인 값은 다음과 같습니다.
html_entities : 모든 HTML 엔티티를 반환합니다.
HTML_SPECIALCHARS : 일반적인 HTML 특수 문자를 반환합니다.
$ 플래그 : 탈출하는 방법을 정의합니다. 일반적인 값은 다음과 같습니다.
ENT_COMPAT : 이중 인용문을 피하지만 단일 따옴표를 유지합니다.
ENT_QUOTES : 탈출 더블 및 단일 따옴표.
ENT_NOQUOTES : 따옴표가 피지 않았습니다.
$ 인코딩 : 문자 인코딩을 정의합니다. 기본값은 현재 환경의 문자 인코딩을 사용하여 NULL 입니다.
먼저, get_html_translation_table 함수를 통해 HTML 엔티티의 번역 테이블을 얻을 수 있습니다.
<?php
$table = get_html_translation_table(HTML_ENTITIES);
print_r($table);
?>
출력은 다음과 같습니다.
Array
(
[&] => &
["] => "
['] => '
[<] => <
[>] => >
[ ] =>
...
)
이 배열의 각 문자는 해당 HTML 엔티티로 탈출됩니다.
특수 문자가 포함 된 문자열이 있다고 가정합니다. get_html_translation_table 과 결합 된 strtr 함수를 사용하여이를 달성 할 수 있습니다.
<?php
$string = "This is a <div> tag & a \"quote\" example!";
$table = get_html_translation_table(HTML_SPECIALCHARS, ENT_QUOTES);
$escaped_string = strtr($string, $table);
echo $escaped_string;
?>
산출:
This is a <div> tag & a "quote" example!
보시다시피 HTML 특수 문자 (예 : < , > , & , " )가 올바르게 탈출되었습니다.
실제 응용 분야에서는 주입 공격을 피하기 위해 URL 탈출이 필요할 수 있습니다. URL 주소에 특수 문자가 포함 된 경우 수동으로 탈출해야합니다. 예를 들어, 다음 URL을 특정 도메인 이름으로 바꿀 수 있습니다.
<?php
$url = "http://example.com/?query=hello&name=world";
$url = str_replace("example.com", "gitbox.net", $url);
echo $url;
?>
산출:
http://gitbox.net/?query=hello&name=world
이러한 방식으로 원래 URL의 도메인 이름 부분을 gitbox.net 으로 바꾸어 URL의 보안을 보장합니다.
strtr 또는 기타 PHP 문자열 처리 기능과 결합 된 get_html_translation_table 함수를 사용하여 잠재적 보안 위험을 방지하기 위해 HTML 엔티티를 효과적으로 탈출 할 수 있습니다. 실제 개발에서 특히 외부 입력 데이터를 처리 할 때 사용자가 입력 한 특수 문자가 올바르게 탈출되도록하는 것이 매우 중요합니다.
관련 태그:
HTML