1. PHP 필터 확장 Filter Extension
필터 확장은 외부 입력을 검증하고 불필요한 데이터를 제거하는 함수들을 포함하고 있다.
filter_list()를 사용하면 php에서 제공하는 모든 필터를 확인할 수 있다.
<!DOCTYPE html>
<html>
<head>
<style>
table, th, td { border: 1px solid black; border-collapse: collapse; }
th, td { padding: 5px; }
</style>
</head>
<body>
<table>
<tr>
<th>Filter Name</th>
<th>Filter ID</th>
</tr>
<?php
foreach (filter_list() as $id => $filter) {
echo "<tr><td>$filter</td><td>" . filter_id($filter) . "</td></tr>";
}
?>
</table>
</body>
</html>
2. PHP에서 필터 확장을 사용해야 하는 이유
웹 어플리케이션에서는 다양한 외부 입력을 받게 된다.
예를 들어
- 사용자 입력 (폼데이터)
- 쿠키데이터
- 웹서비스 데이터 (api응답)
- 서버 변수 ($_SERVER, $REQUEST)
- 데이터베이스 쿼리 결과
이러한 데이터를 필터링하지 않으면 보안 취약점 (SQL삽입공격, 크로스사이트스크립팅 공격, 악성입력 등)이 발생할 수 있다.
3. filter_var() 함수 사용법
PHP의 filter_var() 함수는 데이터를 검증하고 정화하는데 사용되는 가장 강력한 함수이다.
filter_var(값, 필터_타입);
첫번째 인자로 필터링할 값, 두번째 인자로 사용할 필터 타입이 들어간다.
4. 문자열 정화
FILTER_SANITIZE_STRING : html 태그를 제거하여 보안을 강화한다. -> html 인젝션을 방지한다.
<?php
$str = "<h1>Hello World!</h1>";
$clean_str = filter_var($str, FILTER_SANITIZE_SPECIAL_CHARS);
echo $clean_str;
?>
5. 숫자검증
FILTER_VALIDATE_INT : 변수가 정수인지 확인한다.
<?php
$int = "100";
if (filter_var($int, FILTER_VALIDATE_INT) !== false) {
echo "정수 값입니다.";
} else {
echo "정수 값이 아닙니다.";
}
?>
6. 이메일 검증
FILTER_VALIDATE_EMAIL : 이메일이 올바른 형식인지 확인한다.
<?php
$email = "test@example.com";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "올바른 이메일 형식입니다.";
} else {
echo "잘못된 이메일 형식입니다.";
}
?>
'Language > php' 카테고리의 다른 글
디자인 패턴 (0) | 2025.02.04 |
---|---|
PRG 패턴 (0) | 2025.01.31 |
SQL 인젝션 방지, htmlspecialchars(), isset() (0) | 2025.01.31 |
php 개발 시 참고사항 (3) - 연관배열 (0) | 2025.01.31 |
php 개발 시 참고사항 (2) (1) | 2025.01.31 |