>  기사  >  백엔드 개발  >  Magic Quotes가 비활성화된 경우에도 PHP에서 POST 데이터가 자동 이스케이프되는 이유는 무엇입니까?

Magic Quotes가 비활성화된 경우에도 PHP에서 POST 데이터가 자동 이스케이프되는 이유는 무엇입니까?

DDD
DDD원래의
2024-10-28 07:59:02846검색

Why is POST Data Auto-Escaping in PHP Even When Magic Quotes are Disabled?

비활성화된 마법 따옴표를 사용하여 PHP에서 신비한 자동 이스케이프 Post 데이터 공개

PHP에서 POST 데이터로 작업할 때, 특히 WordPress 환경에서는 매직 따옴표를 꺼두었음에도 불구하고 예기치 않은 자동 이스케이프 동작이 발생할 수 있습니다. 이 난처한 문제는 매직 따옴표가 비활성화된 것으로 알려졌음에도 불구하고(get_magic_quotes_gpc()가 0을 반환함) POST 데이터가 자동 이스케이프 처리를 거칠 때 발생합니다.

WordPress의 영향

탐색 시 문제를 더 자세히 살펴보면 WordPress가 자동 이스케이프 메커니즘을 실행하는 데 중요한 역할을 한다는 것이 분명해졌습니다. WordPress가 애플리케이션 초기화 프로세스의 일부로 부트스트랩되면 해당 코드는 PHP의 마법 인용문의 자연스러운 동작을 방해합니다.

WordPress에는 POST 데이터를 포함한 요청 데이터를 가로채고 특정 작업을 수행하는 기능이 포함되어 있습니다. 작은따옴표(')를 이스케이프 처리합니다. 이 동작은 php.ini에서 매직 따옴표가 비활성화된 경우에도 확장됩니다.

버그 소스

WordPress 코드베이스를 자세히 살펴보면 보고된 버그가 드러납니다. WordPress Core Trac 시스템(티켓 18322)에서. 이 문제는 요청 데이터의 잘못된 처리와 관련되어 원치 않는 이스케이프를 유발합니다.

해결책

다행히도 이 자동 이스케이프를 해결할 수 있는 솔루션이 있습니다. 양도 논법. WordPress Codex에서는 작업을 수행하기 전에 POST 데이터를 "이스케이프 해제"하기 위해 Stripslashes_deep() 함수를 사용할 것을 권장합니다. 이 기능을 사용하면 WordPress의 자동 이스케이프를 효과적으로 무시하고 데이터를 원래 형식으로 검색할 수 있습니다.

이 솔루션을 구현하려면 PHP 스크립트에 다음 코드를 추가하세요.

<code class="php">$_GET       = array_map('stripslashes_deep', $_GET);
$_POST      = array_map('stripslashes_deep', $_POST);
$_COOKIE    = array_map('stripslashes_deep', $_COOKIE);
$_SERVER    = array_map('stripslashes_deep', $_SERVER);
$_REQUEST   = array_map('stripslashes_deep', $_REQUEST);</code>

이 코드는 모든 슈퍼 전역에서 슬래시를 제거하여 PHP에서 액세스할 때 POST 데이터가 자동으로 이스케이프되지 않도록 합니다.

위 내용은 Magic Quotes가 비활성화된 경우에도 PHP에서 POST 데이터가 자동 이스케이프되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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