[PHP] PHP에서 안전하게 사용자 입력 처리하기


5시간 33분전
3
0
본문
웹에서 사용자 입력을 받을 때, 보안을 고려하지 않으면 XSS나 SQL Injection 같은 심각한 문제로 이어질 수 있습니다. PHP에서 기본적으로 할 수 있는 보안 처리 방법을 소개합니다.
1. HTML 출력 시에는
htmlspecialchars()
사용자 입력을 그대로 HTML에 출력하면 XSS 공격에 노출될 수 있습니다. 꼭 이스케이핑 처리하세요.
$user_input = $_POST['comment'];
echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');
-
ENT_QUOTES: 작은따옴표, 큰따옴표 모두 변환
-
'UTF-8': 문자 인코딩 명시 (꼭 써주세요)
2. SQL 쿼리에는 Prepared Statement 사용하기
SQL 쿼리에 변수를 직접 넣지 말고, PDO의 prepare()를 사용하면 SQL Injection을 방지할 수 있습니다.
stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$stmt->execute(['email' => $_POST['email']]);
3. 입력값 검증도 기본입니다
예를 들어 이메일 입력이라면, 형식을 검사해서 잘못된 값은 걸러야 합니다.
if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
echo "올바르지 않은 이메일 형식입니다.";
}
✅ 요약
-
입력은 항상 검증!
-
출력은 항상 이스케이프!
-
DB는 Prepared Statement로 처리!
기본적인 부분이지만 이거 하나만 지켜도 보안 수준이 훨씬 높아집니다.
댓글목록0