프로그래밍/PHP

[PHP 수업] 10강 - 폼 처리 및 유효성 검사

월횽 2024. 8. 7. 06:30
728x90
반응형
SMALL

이번 강의에서는 HTML 폼과 PHP의 연동, GET과 POST 요청 처리, 폼 데이터의 유효성 검사 및 필터링, 그리고 보안 고려사항에 대해 다룰 것입니다. 이 강의를 통해 웹 애플리케이션에서 사용자 입력을 안전하게 처리하는 방법을 배울 수 있습니다.

 

 

1. HTML 폼과 PHP의 연동

 

1-1. HTML 폼 만들기

HTML 폼을 사용하여 사용자로부터 데이터를 입력받을 수 있습니다. 폼의 method 속성은 데이터를 전송하는 방법을 정의하며, action 속성은 데이터를 처리할 PHP 파일의 경로를 설정합니다.

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>폼 예제</title>
</head>
<body>
    <form action="process_form.php" method="post">
        <label for="name">이름:</label>
        <input type="text" id="name" name="name">
        <br>
        <label for="email">이메일:</label>
        <input type="email" id="email" name="email">
        <br>
        <input type="submit" value="제출">
    </form>
</body>
</html>
728x90

1-2. PHP로 폼 데이터 처리

폼 데이터를 처리하기 위해 PHP 파일을 작성하고, $_POST 또는 $_GET 슈퍼글로벌 배열을 사용하여 전송된 데이터를 접근합니다.

<?php
// process_form.php

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name = htmlspecialchars($_POST['name']);
    $email = htmlspecialchars($_POST['email']);

    echo "이름: " . $name . "<br>";
    echo "이메일: " . $email;
}
?>

 

 

 

2. GET과 POST 요청 처리

 

2-1. GET 요청

· GET 요청은 URL의 쿼리 문자열을 통해 데이터를 전송합니다.
· URL에 데이터가 포함되어 전송되므로 보안이 취약할 수 있습니다.

<?php
// get_example.php
$name = htmlspecialchars($_GET['name']);
echo "이름: " . $name;
?>

 

· HTML 폼의 GET 요청 예시

<form action="get_example.php" method="get">
    <label for="name">이름:</label>
    <input type="text" id="name" name="name">
    <input type="submit" value="제출">
</form>

 

 

2-2. POST 요청

· POST 요청은 데이터를 HTTP 요청 본문에 포함하여 전송합니다.
· 데이터가 URL에 포함되지 않아 GET에 비해 상대적으로 보안이 좋습니다.

<?php
// post_example.php
$name = htmlspecialchars($_POST['name']);
echo "이름: " . $name;
?>
반응형

· HTML 폼의 POST 요청 예시

<form action="post_example.php" method="post">
    <label for="name">이름:</label>
    <input type="text" id="name" name="name">
    <input type="submit" value="제출">
</form>

 

 

 

3. 폼 데이터 유효성 검사 및 필터링

 

3-1. 유효성 검사

폼 데이터를 유효성 검사하여 입력 값이 올바른지 확인합니다. PHP의 filter_var() 함수와 같은 내장 함수를 사용하여 유효성을 검토할 수 있습니다.

<?php
$email = $_POST['email'];

// 이메일 유효성 검사
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "유효한 이메일 주소입니다.";
} else {
    echo "유효하지 않은 이메일 주소입니다.";
}
?>
SMALL

3-2. 필터링

필터링을 통해 사용자 입력의 잠재적인 위험 요소를 제거합니다. htmlspecialchars() 함수를 사용하여 HTML 특수 문자를 변환하거나, filter_var()를 사용하여 다양한 필터를 적용합니다.

<?php
$name = htmlspecialchars($_POST['name']);
echo "이름: " . $name;
?>

 

 

 

4. 보안 고려사항

 

4-1. SQL 인젝션

SQL 인젝션은 공격자가 악의적인 SQL 코드를 삽입하여 데이터베이스를 조작할 수 있는 보안 취약점입니다. 이를 방지하기 위해 준비된 문장(Prepared Statements) 또는 PDO를 사용합니다.

<?php
// PDO 사용 예시
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');

$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email');
$stmt->execute(['email' => $_POST['email']]);
$user = $stmt->fetch();

echo $user['name'];
?>

 

4-2. XSS (교차 사이트 스크립팅)

XSS 공격은 공격자가 웹 페이지에 악의적인 스크립트를 삽입하여 사용자의 브라우저에서 실행되도록 하는 공격입니다. 이를 방지하기 위해 사용자 입력을 적절히 이스케이프합니다.

<?php
$message = htmlspecialchars($_POST['message']);
echo "메시지: " . $message;
?>

 

 

- 이전 수업 목록

 

 

 

 

 

 

 

 

728x90
반응형
LIST

'프로그래밍 > PHP' 카테고리의 다른 글

[PHP 수업] 12강 - 파일 처리  (0) 2024.08.09
[PHP 수업] 11강 - 세션과 쿠키  (0) 2024.08.08
[PHP 수업] 9강 - 문자열 처리  (0) 2024.08.06
[PHP 수업] 8강 - 배열  (0) 2024.08.05
[PHP 수업] 7강 - 함수  (0) 2024.08.01