PHP 필터
PHP 필터는 검증 및 사용자 입력과 같은 안전하지 않은 소스에서 데이터를 필터링하는 데 사용됩니다.
PHP는 필터 란 무엇인가?
PHP 필터를 확인하고 안전하지 않은 소스에서 데이터를 필터링하는 데 사용됩니다.
테스트 및 검증 필터의 사용자 입력 또는 사용자 데이터가 모든 웹 응용 프로그램의 중요한 부분이다.
PHP 필터 확장은 데이터를 쉽고 빠르게 필터링하도록 설계되었습니다.
왜 필터를 사용할 수 있습니까?
거의 모든 웹 응용 프로그램은 외부 입력에 따라 달라집니다. 이 데이터는 일반적으로 사용자 또는 (예 : 웹 서비스와 같은) 다른 응용 프로그램에서 왔습니다. 필터를 사용하면 응용 프로그램이 올바른 입력 유형을 얻을 수 있도록 할 수 있습니다.
당신 외부 데이터 필터링 항상해야!
입력 필터링은 가장 중요한 애플리케이션 보안 문제이다.
외부 데이터 무엇입니까?
- 폼에서 입력 데이터
- 쿠키
- 웹 서비스 데이터
- 서버 변수
- 데이터베이스 쿼리 결과
기능 및 필터
변수를 필터링하기 위해, 다음의 필터 기능을 사용
- filter_var은 () - 지정된 필터에 의해 하나의 변수를 필터링하기
- filter_var_array은 () - 동일하거나 상이한 필터가 여러 변수를 필터링 할
- filter_input - 하나의 입력 변수를 확인하고 그것을 필터링
- filter_input_array - 기타 입력 변수를 취득하고, 동일하거나 상이한 필터가이를 필터링
다음 예제에서, 우리는 filter_var를 () 함수는 정수의 유효성을 검사 사용
<?php $int = 123; if(!filter_var($int, FILTER_VALIDATE_INT)) { echo("不是一个合法的整数"); } else { echo("是个合法的整数"); } ?>
위의 코드는 변수를 필터링 할 "FILTER_VALIDATE_INT"필터를 사용합니다. 정수가 합법적 인, 그래서 때문에 위의 코드가 출력 :
우리가 (예 : "123ABC"로) 정수가 아닌 변수를 사용하려고하면, 출력은 "정수가 유효하지 않습니다."
기능 및 필터의 전체 목록을 보려면, 우리의 방문 PHP 필터 참조 설명서를 .
유효성 검사 및 살균
필터의 두 가지 종류가 있습니다 :
필터 유효성 검사 :
- 사용자 입력의 유효성을 검사하는 데 사용
- (URL 또는 이메일 확인 등) 엄격한 형식 규칙
- 성공하면, 예상되는 반환 형식, 그것은 FALSE 반환하지 않으면
필터를 살균 :
- 그것은 허용하거나 지정된 문자열을 금지하는 데 사용
- 데이터 포맷 규칙 없음
- 항상 문자열을 반환
옵션 및 플래그
옵션 및 플래그가 지정된 필터를 추가 필터링 옵션을 추가하는 데 사용된다.
다른 필터는 서로 다른 옵션과 플래그가 있습니다.
다음 예에서, 우리는 정수를 확인하기 위해 filter_var ()와 "min_range"와 "max_range"옵션을 사용합니다 :
<?php $var=300; $int_options = array( "options"=>array ( "min_range"=>0, "max_range"=>256 ) ); if(!filter_var($var, FILTER_VALIDATE_INT, $int_options)) { echo("不是一个合法的整数"); } else { echo("是个合法的整数"); } ?>
관련 옵션으로 위의 코드는 "옵션"에서라는 배열에 배치해야합니다처럼. 플래그는 어레이 내에 필요하지 않은 경우.
정수는 "300"이기 때문에, 지정된 범위 내에없는 코드의 출력은 상기 한 것이다 :
不是一个合法的整数
기능 및 필터의 전체 목록을 보려면, 우리의 방문 PHP 필터 참조 설명서를 . 각 필터 및 플래그에 사용할 수있는 옵션이 볼 수 있습니다.
유효성 검사 입력
의 양식에서 입력을 검증 해보자.
우리는 제일 먼저 입력 데이터는 우리가 찾고있는 것을 확인하는 것입니다 할 필요가있다.
그럼 우리가 입력 한 데이터를 필터링 할 filter_input () 함수를 사용합니다.
아래의 예에서, 입력 변수의 "이메일"은 PHP 페이지에 전달된다 :
<?php if(!filter_has_var(INPUT_GET, "email")) { echo("没有 email 参数"); } else { if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)) { echo "不是一个合法的 E-Mail"; } else { echo "是一个合法的 E-Mail"; } } ?>
다음 상기 결과로서는 같다 :
예를 설명
위의 예는 (이메일) 전송의 방법 "GET"에 의한 입력 변수가 있습니다 :
- "이메일"입력 변수 "GET"타입의 존재를 감지
- 유효한 이메일 주소인지 여부를 검출하기 위해 입력 변수가 있으면
정화 입력
의 양식의 URL에서 오는 정리 해보자.
우선, 우리는 입력 데이터는 우리가 찾고있는 것을 확인해야합니다.
그 다음 우리는 입력 데이터 filter_input () 함수를 소독.
아래의 예에서, 입력 변수 "URL"은 PHP 페이지에 전달된다 :
<?php if(!filter_has_var(INPUT_GET, "url")) { echo("没有 url 参数"); } else { $url = filter_input(INPUT_GET, "url", FILTER_SANITIZE_URL); echo $url; } ?>
예를 설명
하나의 입력 변수 (URL)에 의해 위의 예는 방법 보내 "GET"는 :
- "URL"입력 변수 "GET"타입의 존재를 감지
- 입력 변수가 존재하는 경우, 그 정제 (잘못된 문자 제거)하고 $ URL 변수에 저장한다
입력 변수가이 같은 문자열 인 경우 : "http://www.ruaanoob.com/"다음과 같이 정제 후에는 $ url 변수는 다음과 같습니다
입력 필터 복수
양식은 종종 여러 개의 입력 필드로 구성되어 있습니다. 반복적으로 호출 filter_var 나 filter_input 기능을 방지하기 위해, 우리는 filter_input_array의 filter_var_array 또는 기능을 사용할 수 있습니다.
이 경우는 세 GET 변수를 필터링 filter_input_array () 함수를 사용한다. 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); if (!$result["age"]) { echo("年龄必须在 1 到 120 之间。<br>"); } elseif(!$result["email"]) { echo("E-Mail 不合法<br>"); } else { echo("输入正确"); } ?>
예를 설명
위의 예는 "GET"메소드를 통해 전송 된 세 개의 입력 변수 (이름, 나이, 이메일)가 있습니다 :
- 입력 변수와 필터를 지정하는 데 사용되는 입력 변수의 이름을 포함하는 배열을 설정
- GET 변수 그냥 설정 배열 통화 filter_input_array 포함 () 함수, 입력 매개 변수,
- 검출 $ 결과 변수 "연령"과 "이메일"입력 변수는 불법입니다. (사용 filter_input_array () 함수 이후에 잘못된 입력이 있으면, 상기 입력 변수는 FALSE이다.)
filter_input_array () 함수에 두 번째 인수는 배열 또는 단일 필터 ID가 될 수 있습니다.
상기 파라미터는 하나의 필터 ID 인 경우, 지정된 필터가 모든 입력 배열 값을 필터링한다.
이 매개 변수가 배열 인 경우, 배열은 다음과 같은 규칙을 준수해야합니다 :
- 입력 변수를 포함하는 연관 배열이어야합니다 (예 : "나이"입력 변수로) 배열 키입니다
- 이 배열의 값을 필터 ID, 또는 상기 필터의 규정 플래그 및 옵션 어레이이어야
사용 필터 콜백
FILTER_CALLBACK 필터를 사용하면, 사용자 정의 함수를 호출 할 수 있습니다 사용하는 필터로 사용합니다. 따라서, 우리는 데이터 필터링을 완벽하게 제어 할 수 있습니다.
당신은 사용자 정의 함수를 만들거나 기존의 PHP 기능을 사용할 수 있습니다.
당신은 방법을 미리 정해진 규정에 지정된 옵션에 따라, 필터 기능을 사용할 준비가 될 것입니다. 이름 "옵션"으로 연관 배열합니다.
다음 예에서, 우리는 공간으로 변환 "_"모든 사용자 정의 기능을 사용 :
<?php function convertSpace($string) { return str_replace("_", ".", $string); } $string = "www_w3big_com!"; echo filter_var($string, FILTER_CALLBACK, array("options"=>"convertSpace")); ?>
상기 코드의 결과는 다음이다 :
예를 설명
위의 예는 모든 "_"로 "". :
- A는 "_"로 대체 만들려면 "."기능을
- 우리의 함수를 포함 FILTER_CALLBACK 필터 어레이 파라미터들 통화 filter_var () 함수