[PHP] [PHP 팁] 사용자 입력을 안전하게 처리하는 방법 - filter_input() 활용법


본문
[PHP 팁] 사용자 입력을 안전하게 처리하는 방법 - filter_input() 활용법
웹 개발을 하다 보면 사용자 입력을 처리하는 일이 정말 많죠. 특히 PHP에선 전통적으로
$_GET
,
$_POST
같은 슈퍼글로벌을 그대로 쓰는 경우가 많아 보안에 취약할 수 있습니다.
이번 글에서는 PHP의 내장 함수인
filter_input()
을 이용해서 입력값을 더 안전하고 깔끔하게 처리하는 방법을 소개합니다.
✅ filter_input() 이란?
filter_input()
함수는 외부 입력값을 가져오면서 동시에 **필터링(정제/검증)**까지 해주는 함수입니다.
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
이 코드는
$_POST['username']
값을 가져오되, HTML 태그를 제거한 문자열로 정리해줍니다.
## 자주 사용하는 필터들
필터 | 설명 | 예시 |
---|---|---|
FILTER_SANITIZE_STRING
|
문자열에서 HTML 태그 제거 |
<b>hi</b>
→
hi
|
FILTER_VALIDATE_INT
|
정수 확인 |
123
→ OK /
abc
→ false |
FILTER_VALIDATE_EMAIL
|
이메일 형식 검증 |
user@example.com
→ OK |
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);if ($email === false) {echo "유효하지 않은 이메일 주소입니다.";}
## 왜 좋은가요?
-
입력값 검사와 정리를 동시에 처리 가능
-
코드가 명확하고 보안성 향상
-
XSS, SQL Injection 같은 보안 위협을 줄이는 데 효과적
⚠️ 주의사항
-
filter_input()
은 서버 설정(variables_order
)에 따라 INPUT 값이 없을 수도 있어요. -
PHP 8.1부터는
FILTER_SANITIZE_STRING
이 폐지(deprecated) 되었어요. 대신strip_tags()
를 사용하세요.
// PHP 8.1 이상에서는 이렇게 처리$username = strip_tags(filter_input(INPUT_POST, 'username'));
✅ 요약
-
filter_input()
은 PHP에서 안전하게 사용자 입력을 처리할 수 있는 강력한 도구입니다. -
필터링과 검증을 함께 수행할 수 있어 보안 사고 예방에 효과적입니다.
-
앞으로 입력값을 다룰 때는 꼭
filter_input()
을 고려해보세요!
궁금한 점이나 다른 보안 팁이 있다면 댓글로 같이 나눠봐요! ????
댓글목록0