티스토리 뷰
클라이언트로 부터 제공 받은 정보(입력)은 기본적으로 신뢰 할 수 없기 때문에 모든 값에 대해서 필히 검증을 해야 하기 때문에 웹 개발에서 상당 부분을 차지하고 있는건 Validate와 Sanitize라고 생각한다.
간혹, JS를 통해 클라이언트단에서 값검증을 하는 경우가 있는데 이는 UI적인 부분일뿐 유저로 받는 모든 값은 백단에서 필히 검증한 후 사용하여야 한다.
그런부분이 없다면 서버에 대한 통제권을 열어줄 뿐이다.
어떤 웹사이트에서든 진행하여야하고 개발자라면 누구나 하고 있을 이 지루하면서도 조금의 틈도 없이 처리해야할 작업을 위해 PHP에서 다양한 Filter를 제공하고 있다.
filter 함수에 다양한 옵션들을 줄 수 있고 Callback도 가능하기 때문에 이를 백분 활용한다면 많은 시간을 줄일 수 있다.
물론, PHP 프레임워크들을 사용할 경우 이를 활용한 많은 래퍼 함수들이 있으므로 그에 대해서도 충분히 살펴보는 것이 좋다.
filter_var()
<?php
if (array_key_existx('REMOTE_ADDR', $_SERVER)) {
filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP);
}
filter_var_array()
Array를 통해 한 번에 많은 변수 처리가 가능하다.
<?php
$data = array(
'product_id' => 'libgd<script>',
'component' => '10',
'versions' => '2.0.33',
'testscalar' => array('2', '23', '10', '12'),
'testarray' => '2',
);
$args = array(
'product_id' => FILTER_SANITIZE_ENCODED,
'component' => array('filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_FORCE_ARRAY,
'options' => array('min_range' => 1, 'max_range' => 10)
),
'versions' => FILTER_SANITIZE_ENCODED,
'doesnotexist' => FILTER_VALIDATE_INT,
'testscalar' => array(
'filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_REQUIRE_SCALAR,
),
'testarray' => array(
'filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_FORCE_ARRAY,
)
);
$myinputs = filter_var_array($data, $args);
var_dump($myinputs);
echo "\n";
?>
result to:
array(6) {
["product_id"] => string(17) "libgd%3Cscript%3E"
["component"] => array(1) { [0] => int(10) }
["versions"] => string(6) "2.0.33"
["doesnotexist"] => NULL
["testscalar"] => bool(false)
["testarray"] => array(1) { [0] => int(2) }
}
특히 $_GET, $_ENV, $_POST, $_SESSION 등과 같은 변수들을 사용할 경우 직접 접근하여 사용하지 말고
filter_input()을 활용하면 좋다.
Type : INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, INPUT_ENV.
Example #1
<?php
$search_html = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_SPECIAL_CHARS);
$search_url = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_ENCODED);
echo "You have searched for $search_html.\n";
echo "<a href='?search=$search_url'>Search again.</a>";
?>
Example #1 result to:
You have searched for Me & son.
<a href='?search=Me%20%26%20son'>Search again.</a>
Data Filtering
- Introduction
- Installing/Configuring
- Types of filters
- Predefined Constants
- Examples
- Filter Functions
- filter_has_var — Checks if variable of specified type exists
- filter_id — Returns the filter ID belonging to a named filter
- filter_input_array — Gets external variables and optionally filters them
- filter_input — Gets a specific external variable by name and optionally filters it
- filter_list — Returns a list of all supported filters
- filter_var_array — Gets multiple variables and optionally filters them
- filter_var — Filters a variable with a specified filter
'오늘도 개발자 > PHP' 카테고리의 다른 글
[PHP] Date Time (0) | 2022.01.28 |
---|---|
[PHP] 함수 Function (0) | 2022.01.27 |
[PHP]CSPRNG (rand와 random_int 차이) (0) | 2022.01.26 |
[PHP] 정규표현식(Regular Expression) PCRE (0) | 2022.01.26 |
[PHP] Array 스프레드 연산자 (Spread Operator in Array Expression) (0) | 2022.01.24 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- URL인코딩
- Lighitsail
- 라이트세일
- 워드프레스
- wp-members
- 썸머노트
- 스프레드연산자
- 코스모스팜
- php
- 빛의성당
- 사용자정의하기
- 철거
- ontent
- MySQL
- URL디코딩
- 한빛미디어
- Theme Customization
- 11번가 아마존 #우주패스 #우주쓰레기
- 빈화면
- wordpress #워드프레스 #url
- 고흐1인칭시점
- 이사
- 이전설치
- 도스 코파스
- CSPRNG
- Sanitize
- WordPress
- 지대공
- url복사
- FTP권한문제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함