> 백엔드 개발 > PHP 튜토리얼 > PHP의 FILTER_SANITIZE_STRING 지원 중단: 최상의 교체 옵션은 무엇입니까?

PHP의 FILTER_SANITIZE_STRING 지원 중단: 최상의 교체 옵션은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-01 11:14:10
원래의
273명이 탐색했습니다.
PHP's FILTER_SANITIZE_STRING Deprecation: What Are the Best Replacement Options?
더 이상 사용되지 않는 기능과 이유는 무엇입니까?

FILTER_SANITIZE_STRING 및 FILTER_SANITIZE_STRIPPED는 이전에 입력 문자열에서 잠재적인 XSS 취약점을 제거하는 데 사용되었습니다. 그러나 이러한 필터는 혼란스럽고 직관적이지 않은 동작을 나타냈습니다. FILTER_SANITIZE_STRING이 '<' 사이의 모든 문자를 제거했습니다. 문자열의 끝 부분을 제거하고 NUL 바이트를 제거하고 작은따옴표와 큰따옴표를 인코딩했습니다.

PHP 커뮤니티는 개발자가 의도한 용도를 종종 오해함으로써 이러한 필터가 해결한 것보다 더 많은 혼란을 야기한다고 판단했습니다. 입력 삭제는 FILTER_UNSAFE_RAW와 같은 다른 필터에 의해 이미 적절하게 처리되었습니다.

교체 옵션

이를 더 이상 사용되지 않는 필터로 대체할 수 있는 몇 가지 옵션이 있습니다. 필터:

FILTER_UNSAFE_RAW:

이 기본 문자열 필터는 필터링을 수행하지 않습니다. 수정 없이 원시 문자열 값을 원하는 경우 이 기능을 사용하십시오.

    htmlspecialchars():
  • XSS 취약점에 악용될 수 있는 특수 문자를 인코딩하려면 이 함수를 사용하십시오. 그러나 입력이 아닌 출력에 적용해야 한다는 점을 기억하세요.
  • 사용자 정의 폴리필:
  • FILTER_SANITIZE_STRING 및 FILTER_SANITIZE_STRIPPED의 특정 필터링 동작이 필요한 경우 정규식 기반 폴리필을 생성할 수 있습니다. ~처럼 다음:
  • 황금률을 기억하세요
입력 삭제가 XSS 공격에 대한 확실한 방어 수단으로 간주되어서는 안 된다는 점을 강조하는 것이 중요합니다. 대신 개발자는 잠재적으로 위험한 콘텐츠가 페이지에 삽입되는 것을 방지하기 위해 출력을 이스케이프 처리하는 데 집중해야 합니다.
function filter_string_polyfill(string $string): string
{
    $str = preg_replace('/\x00|<[^>]*>?/', '', $string);
    return str_replace(["'", '"'], ['&#39;', '&#34;'], $str);
}

위 내용은 PHP의 FILTER_SANITIZE_STRING 지원 중단: 최상의 교체 옵션은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿