>  기사  >  백엔드 개발  >  내 $_POST 변수가 프로덕션에서는 이스케이프되지만 로컬에서는 이스케이프되지 않는 이유는 무엇입니까?

내 $_POST 변수가 프로덕션에서는 이스케이프되지만 로컬에서는 이스케이프되지 않는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-27 09:08:03609검색

Why Are My $_POST Variables Escaped on Production but Not Locally?

프로덕션 서버에서 POST 변수를 이스케이프하는 이유

AJAX POST 요청에서 데이터를 수신할 때 $_POST 변수가 프로덕션에서 이스케이프되는 경우 서버에 있지만 로컬 서버에는 없는 경우 프로덕션 서버에서 마법 따옴표가 활성화되어 있는 것이 가능한 원인입니다.

마법 따옴표가 수신된 데이터의 일부인 경우 작은 따옴표, 큰 따옴표, 백슬래시 및 널 문자를 자동으로 이스케이프합니다. POST 요청과 같은 외부 소스에서. 이 기능은 악성 코드 삽입을 방지하기 위한 보안 조치이지만 원시 데이터를 검색해야 할 때 문제가 발생할 수도 있습니다.

문제를 해결하고 두 서버 모두에서 일관된 동작을 보장하려면 몇 가지 옵션이 있습니다. :

마법 따옴표 비활성화

권장되는 접근 방식은 php.ini에서 마술 따옴표를 비활성화하는 것입니다. 이는 POST 변수의 이스케이프를 전역적으로 비활성화합니다. 그러나 PHP 6에서는 마법 따옴표가 제거되므로 이에 의존하지 않는 것이 좋습니다.

스트립 슬래시

할 수 없는 경우 마법 따옴표를 비활성화하면 Stripslashes() 함수를 사용하여 $_POST 변수에서 슬래시를 수동으로 제거할 수 있습니다.

if (get_magic_quotes_gpc()) {
    $my_post_var = stripslashes($_POST["my_post_var"]);
}

이러한 솔루션 중 하나를 구현하면 $_POST 변수가 이스케이프되지 않도록 할 수 있습니다. 프로덕션 서버에서 로컬 및 프로덕션 서버 모두 일관되게 작동하는지 확인하세요.

위 내용은 내 $_POST 변수가 프로덕션에서는 이스케이프되지만 로컬에서는 이스케이프되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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