다음 코드에서 보안상 문제가 없는 완전한 처리 흐름은?

과목: PHP

문제 번호: 2892

hard
다음 코드에서 보안상 문제가 없는 완전한 처리 흐름은?
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
    이름: <input type="text" name="fname">
    <input type="submit">
</form>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name = $_REQUEST['fname'];
    // 여기서 어떤 검증이 필요한가?
}
?>
A. 바로 출력: echo $name;
B. 길이만 체크: if(strlen($name) > 0) echo $name;
C. HTML 특수문자 처리와 빈값 검증: $name = htmlspecialchars($name); if(!empty($name)) echo $name;
D. 대소문자 변환: echo strtoupper($name);

정답: C



웹 애플리케이션에서 사용자 입력을 처리할 때는 항상 보안과 유효성 검증을 함께 고려해야 합니다.

⦁ 필수 보안 처리:
1. htmlspecialchars(): XSS 공격 방지
2. empty(): 빈값 검증으로 오류 방지

⦁ 완전한 처리 흐름:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name = htmlspecialchars($_REQUEST['fname']);
    if (empty($name)) {
        echo "이름을 입력해주세요";
    } else {
        echo "안녕하세요, " . $name . "님!";
    }
}

⦁ 각 옵션의 문제점:
⦁ 옵션 1: XSS 공격 위험
⦁ 옵션 2: 보안 처리 누락
⦁ 옵션 4: 보안 처리와 검증 모두 누락

💡 학습 팁

이 문제를 포함한 PHP 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.