PHP 필터 전면 분석
PHP 필터 란 무엇 입 니까?
PHP 필 터 는 비 안전 소스 에서 온 데 이 터 를 검증 하고 여과 하 는 데 사 용 됩 니 다.
사용자 의 입력 이나 사용자 정의 데 이 터 를 검증 하고 여과 하 는 것 은 모든 웹 프로그램의 중요 한 구성 부분 입 니 다.
PHP 의 필 터 를 확장 하 는 목적 은 데 이 터 를 쉽게 걸 러 내 는 것 입 니 다.
필 터 를 왜 사용 합 니까?
거의 모든 웹 프로그램 이 외부 입력 에 의존 합 니 다.이 데 이 터 는 보통 사용자 나 다른 응용 프로그램(예 를 들 어 웹 서비스)에서 나온다.필 터 를 사용 하면 프로그램 이 정확 한 입력 형식 을 얻 을 수 있 도록 확보 할 수 있 습 니 다.
외부 데 이 터 를 항상 필터 해 야 합 니 다!
입력 필 터 는 가장 중요 한 응용 프로그램 보안 과제 중의 하나 이다.
외부 데이터 란 무엇 입 니까?
폼 입력 데이터
•Cookies
서버 변수
•데이터베이스 조회 결과
함수 와 필터
변 수 를 걸 러 내 려 면 다음 필터 함수 중 하 나 를 사용 하 십시오:
•filter_var()-지정 한 필 터 를 통 해 단일 변 수 를 걸 러 냅 니 다.
•filter_var_array()-같은 필터 나 다른 필 터 를 통 해 여러 변 수 를 걸 러 냅 니 다.
•filter_input-입력 변 수 를 가 져 오고 걸 러 냅 니 다.
•filter_input_array-여러 입력 변 수 를 가 져 오고 같은 필터 나 다른 필 터 를 통 해 필터 합 니 다.
아래 의 예 에서 우 리 는 filtervar()함수 가 정 수 를 검 증 했 습 니 다:
<?php
$int = 123;
if(!filter_var($int, FILTER_VALIDATE_INT))
{
echo("Integer is not valid");
}
else
{
echo("Integer is valid");
}
?>
위의 코드 는"FILTER"를 사 용 했 습 니 다.VALIDATE_INT"필 터 는 변 수 를 필터 합 니 다.이 정수 가 합 법 적 이기 때문에 코드 의 출력 은"Integer is valid"입 니 다.만약 우리 가 정수 가 아 닌 변 수 를 사용 하려 고 한다 면 출력 은"Integer is not valid"입 니 다.
완전한 함수 와 필터 목록 이 필요 하 시 면 저희 의 PHP Filter 참고 매 뉴 얼 을 방문 하 십시오.
Validating 과 Sanitizing.
두 가지 필터 가 있 습 니 다:
Validating 필터:
•사용자 입력 검증 에 사용
•엄격 한 형식 규칙(예:URL 이나 E-Mail 인증)
•성공 하면 원 하 는 형식 으로 되 돌아 가 고 실패 하면 FALSE 로 되 돌아 갑 니 다.
Sanitizing 필터:
•문자열 에 지정 한 문 자 를 허용 하거나 금지 합 니 다.
•데이터 형식 규칙 없 음
문자열
옵션 과 표지
옵션 과 로 고 는 지정 한 필터 에 추가 필터 옵션 을 추가 하 는 데 사 용 됩 니 다.
서로 다른 필 터 는 서로 다른 옵션 과 표지 가 있 습 니 다.
아래 의 예 에서 우 리 는 filtervar()와"min"range"및"maxrange"옵션 이 정 수 를 검 증 했 습 니 다:
<?php
$var=300;
$int_options = array(
"options"=>array
(
"min_range"=>0,
"max_range"=>256
)
);
if(!filter_var($var, FILTER_VALIDATE_INT, $int_options))
{
echo("Integer is not valid");
}
else
{
echo("Integer is valid");
}
?>
위의 코드 처럼 옵션 은'options'라 는 관련 배열 에 넣 어야 합 니 다.로 고 를 사용 하면 배열 에 있 지 않 아 도 됩 니 다.정수 가'300'이기 때문에 지정 한 범위 내 에 있 지 않 습 니 다.상기 코드 의 출력 은'Integer is not valid'입 니 다.
완전한 함수 와 필터 목록 이 필요 하 다 면 W3 School 에서 제공 하 는 PHP Filter 참조 매 뉴 얼 을 방문 하 십시오.모든 필터 의 사용 가능 한 옵션 과 표 지 를 볼 수 있 습 니 다.
검증 입력
폼 의 입력 을 검증 해 봅 시다.
우리 가 해 야 할 첫 번 째 일 은 우리 가 찾 고 있 는 입력 데이터 가 존재 하 는 지 확인 하 는 것 이다.
그리고 우 리 는 filterinput()함수 가 입력 한 데 이 터 를 필터 합 니 다.
다음 예 에서 입력 변수"email"이 PHP 페이지 로 전 달 됩 니 다.
<?php
if(!filter_has_var(INPUT_GET, "email"))
{
echo("Input type does not exist");
}
else
{
if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL))
{
echo "E-Mail is not valid";
}
else
{
echo "E-Mail is valid";
}
}
?>
예 설명:위의 예 는"GET"방법 으로 전 송 된 입력 변수(email)가 있 습 니 다.
1."GET"형식의"email"입력 변수 가 있 는 지 확인
2.입력 변수 가 있 으 면 유효한 메 일 주소 인지 확인 합 니 다.
정화 입력
폼 에서 들 려 오 는 URL 을 정리 해 봅 시다.
우선,우 리 는 우리 가 찾 고 있 는 입력 데이터 가 존재 하 는 지 확인 해 야 한다.
그리고 우 리 는 filterinput()함수 로 입력 데 이 터 를 정화 합 니 다.
다음 예 에서 입력 변수"url"이 PHP 페이지 로 전 달 됩 니 다.
<?php
if(!filter_has_var(INPUT_POST, "url"))
{
echo("Input type does not exist");
}
else
{
$url = filter_input(INPUT_POST, "url", FILTER_SANITIZE_URL);
}
?>
예 설명:위의 예 는"POST"방법 으로 전 송 된 입력 변수(url)가 있 습 니 다.
1."POST"형식의"url"입력 변수 가 있 는 지 확인
2.이 입력 변수 가 존재 하면 정화(불법 문자 삭제)하고$url 변수 에 저장 합 니 다.
만약 입력 변수 가 이와 유사 하 다 면:"http://www.W3o 법 ol.com.c 문자 n/"가 아니면 정 화 된$url 변 수 는 다음 과 같 아야 합 니 다.
http://www.W3School.com.cn/
여러 입력 필터
폼 은 보통 여러 입력 필드 로 구성 된다.필터var 또는 filterinput 중복 호출,filter 사용 가능var_array 또는 the filterinput_array 함수.
이 예 에서 우 리 는 filter 를 사용한다.input_array()함수 로 세 개의 GET 변 수 를 걸 러 냅 니 다.받 은 GET 변 수 는 이름,나이,메 일 주소 입 니 다.
<?php
$filters = array
(
"name" => array
(
"filter"=>FILTER_SANITIZE_STRING
),
"age" => array
(
"filter"=>FILTER_VALIDATE_INT,
"options"=>array
(
"min_range"=>1,
"max_range"=>120
)
),
"email"=> FILTER_VALIDATE_EMAIL,
);
$result = filter_input_array(INPUT_GET, $filters);(array(3) { ["name"]=> string(1) "1" ["age"]=> bool(false) ["email"]=> string(8) "[email protected]" })
if (!$result["age"])
{
echo("Age must be a number between 1 and 120.<br />");
}
elseif(!$result["email"])
{
echo("E-Mail is not valid.<br />");
}
else
{
echo("User input is valid");
}
?>
예 설명:위의 예 는'GET'방법 으로 전 송 된 입력 변수 세 개(name,age and email)가 있 습 니 다.
1.입력 변수의 이름과 지정 한 입력 변수 에 사용 할 필 터 를 포함 하 는 배열 을 설정 합 니 다.
2.filter 호출input_array 함수,매개 변 수 는 GET 입력 변수 와 방금 설정 한 배열 을 포함 합 니 다.
3.$result 변수 중의"age"와"email"변수 에 불법 입력 이 있 는 지 확인 합 니 다.(불법 입력 이 있 으 면)
filter_input_array()함수 의 두 번 째 매개 변 수 는 배열 이나 단일 필터 의 ID 일 수 있 습 니 다.
이 인자 가 단일 필터 의 ID 라면 이 지정 한 필 터 는 입력 배열 의 모든 값 을 걸 러 냅 니 다.
이 매개 변수 가 배열 이 라면 이 배열 은 아래 의 규칙 을 따라 야 합 니 다.
•관련 배열 이 어야 합 니 다.그 안에 포 함 된 입력 변 수 는 배열 의 키(예 를 들 어"age"입력 변수)입 니 다.
•이 배열 의 값 은 필터 의 ID 또는 필터,로고,옵션 이 정 해 져 있 는 배열 이 어야 합 니 다.
필터 콜백 사용 하기
FILTER 사용 을 통 해CALLBACK 필 터 는 사용자 정의 함 수 를 호출 하여 필터 로 사용 할 수 있 습 니 다.이렇게 해서 우 리 는 데이터 필터 의 완전한 통제 권 을 가지 게 되 었 다.
사용자 정의 함 수 를 만 들 수도 있 고 기 존 PHP 함 수 를 사용 할 수도 있 습 니 다.
필터 함 수 를 사용 할 방법 을 규정 합 니 다.정 해진 옵션 과 같 습 니 다.
아래 의 예 에서,우 리 는 사용자 정의 함 수 를 사용 하여 모든""을공백 으로 변환:
<?php
function convertSpace($string)
{
return str_replace("_", " ", $string);
}
$string = "Peter_is_a_great_guy!";
echo filter_var($string, FILTER_CALLBACK, array("options"=>"convertSpace"));
?>
이상 코드 의 결 과 는 다음 과 같 습 니 다.Peter is a great guy!
예 설명:
위의 예 는 모든""을공백 으로 변환:
1.""하나 만 들 기빈 칸 으로 바 꾸 는 함수
2.filter 호출var()함수,그 매개 변 수 는 FILTER 입 니 다.CALLBACK 필터 및 우리 함 수 를 포함 하 는 배열
위 에서 말 한 것 은 편집장 님 께 서 소개 해 주신 PHP Filter 필 터 를 전면적으로 해석 한 것 입 니 다.여러분 께 도움 이 되 셨 으 면 좋 겠 습 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.