데이터 필터링
데이터 필터링 (Data Filtering)
사용자가 보낸 입력 같은 신뢰할 수 없는 데이터를 처리할 때, 그 데이터를 검증(validate)하거나 정화(sanitize)해야 해요. Filter 확장은 바로 그런 필터들을 제공합니다.
본문
이 확장은 데이터를 검증하거나 정화하는 필터를 제공해요. 데이터 소스에 알 수 없는(또는 외부의) 데이터가 포함될 때 특히 유용하며, 예를 들어 HTML 폼에서 온 데이터가 그런 경우가 많습니다.
필터링에는 크게 두 가지 유형이 있어요: 검증(validation) 과 정화(sanitization).
검증 (Validation)
검증 필터는 데이터가 특정 기준을 충족하는지 확인하는 데 사용돼요. 이러한 필터는 FILTER_VALIDATE_* 상수로 식별됩니다. 예를 들어 FILTER_VALIDATE_EMAIL 필터는 데이터가 유효한 이메일 주소인지 판별할 수 있어요. 단, 검증은 입력 데이터를 절대 변경하지 않습니다.
정화 (Sanitization)
반면 정화는 데이터를 "깨끗이 정리"하는 것이므로, 문자를 추가하거나 제거하면서 입력 데이터를 변경할 수 있어요. 이러한 필터는 FILTER_SANITIZE_* 상수로 식별됩니다. 예를 들어 FILTER_SANITIZE_EMAIL 필터는 이메일 주소에 부적절한 문자를 제거해요. 하지만 정화된 데이터가 유효한 이메일인지는 검증하지 않습니다.
플래그 (Flags)
대부분의 필터는 필터 동작을 미세 조정하는 선택적 플래그를 지원하며, 이 플래그들은 FILTER_FLAG_* 상수로 식별됩니다.
예를 들어 FILTER_VALIDATE_URL 검증 필터에 FILTER_FLAG_PATH_REQUIRED를 함께 쓰면, URL에 경로(path)가 필요합니다. 즉 https://example.org/foo에서의 /foo처럼 경로가 있어야 해요.
구성 요소
- 설치/설정: Installation, Runtime Configuration, Predefined Constants
- 예제: Validation(검증), Sanitization(정화)
필터 함수 일람
filter_has_var— 지정 타입의 변수가 존재하는지 확인filter_id— 이름 있는 필터에 속한 필터 id 반환filter_input— 이름으로 특정 외부 변수 가져오기(선택적으로 필터 적용)filter_input_array— 외부 변수 가져오기(선택적으로 필터 적용)filter_list— 지원되는 모든 필터 목록 반환filter_var— 지정 필터로 변수 필터링filter_var_array— 여러 변수 가져오기(선택적으로 필터 적용)
예외 클래스
Filter\FilterException— 필터 예외Filter\FilterFailedException— 필터 실패 예외