Latest web development tutorials
×

PHP 코스

PHP 코스 PHP 간략한 소개 PHP 설치 PHP 문법 PHP 변수 PHP echo/print PHP 데이터 유형 PHP 상수 PHP 현 PHP 운영자 PHP If...Else PHP Switch PHP 배열 PHP 배열을 정렬 PHP 자동 전역 PHP While 순환 PHP For 순환 PHP 기능 PHP 매직 변수 PHP 네임 스페이스 PHP 객체 지향

PHP 형태

PHP 형태 PHP 폼 인증 PHP 형태 - 필수 입력 사항 PHP 형태 - 확인 이메일 및 URL PHP 완전한 형태의 인스턴스 PHP $_GET 변수 PHP $_POST 변수

PHP 고급 자습서

PHP 다차원 배열 PHP 날짜 PHP 포함 PHP 파일 PHP 파일 업로드 PHP Cookie PHP Session PHP E-mail PHP 보안 E-mail PHP Error PHP Exception PHP 필터 PHP 고급 필터 PHP JSON

PHP 7 새로운 기능

PHP 7 새로운 기능

PHP 데이터베이스

PHP MySQL 간략한 소개 PHP MySQL 연결 PHP MySQL 데이터베이스 만들기 PHP MySQL 데이터 테이블 만들기 PHP MySQL 데이터를 삽입 PHP MySQL 여러 데이터를 삽입 PHP MySQL 문 준비 PHP MySQL 데이터 읽기 PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX 간략한 소개 AJAX PHP AJAX 데이터베이스 AJAX XML AJAX 실시간 검색 AJAX RSS Reader AJAX 투표

PHP 참조 설명서

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP 이미지 처리 PHP RESTful

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"에 의한 입력 변수가 있습니다 :

  1. "이메일"입력 변수 "GET"타입의 존재를 감지
  2. 유효한 이메일 주소인지 여부를 검출하기 위해 입력 변수가 있으면

정화 입력

의 양식의 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"는 :

  1. "URL"입력 변수 "GET"타입의 존재를 감지
  2. 입력 변수가 존재하는 경우, 그 정제 (잘못된 문자 제거)하고 $ 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"메소드를 통해 전송 된 세 개의 입력 변수 (이름, 나이, 이메일)가 있습니다 :

  1. 입력 변수와 필터를 지정하는 데 사용되는 입력 변수의 이름을 포함하는 배열을 설정
  2. GET 변수 그냥 설정 배열 통화 filter_input_array 포함 () 함수, 입력 매개 변수,
  3. 검출 $ 결과 변수 "연령"과 "이메일"입력 변수는 불법입니다. (사용 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"));
?>

상기 코드의 결과는 다음이다 :

예를 설명

위의 예는 모든 "_"로 "". :

  1. A는 "_"로 대체 만들려면 "."기능을
  2. 우리의 함수를 포함 FILTER_CALLBACK 필터 어레이 파라미터들 통화 filter_var () 함수