exit function

DATE : 2023/11/4

[PHP#func : exit]

header function에 이어 exit에 대해 알아볼까 한다.

짧게 header function이 동작하는 방식을 떠올려보면

response header에 주어진 값을 넣어주기 때문에 Location header를 작성해 redirection을

구현하는 방법 중 하나로 사용할 수 있었다.

그.런.데

사용자 입장에서는 단순히 페이지가 바뀌는 redirection 과정에서

페이지 내용이 노출될 수 있다고 한다. 😳

눈으로 확인하기 위해 간단한 코드를 작성해보자.

<?php
    if($_GET['login_id'] == '') {
        header("location: login.html");
    }
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Main page</title>
</head>
<body>
    <h2>this is index page</h2>
</body>
</html>

위의 코드는 index.php 코드로 사용자가 index page에 접근했을 때

$_GET['login_id'] 값이 비어있으면 login.html로 이동하는 구조이다.

실제로 index page에 접근하면

바로 login.html로 이동하는 걸 볼 수 있다.

표면적으로만 보면 별 문제가 없을 수 있지만 packet을 확인해보면

로그인 한 사용자에게만 제공되어야 하는 index page 내용이 노출되고 있다..!

이렇게 header function만 사용하는 경우,

header function이 사용된 후의 페이지 내용이 그대로 response에 들어가게 된다.

이때 페이지 내용이 packet에 노출되는 걸 막기 위해 사용할 수 있는 함수가 바로 exit이다.

<?php
    if($_GET['login_id'] == '') {
        header("location: login.html");
        exit;
    }
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Main page</title>
</head>
<body>
    <h2>this is index page</h2>
</body>
</html>

header function을 사용한 후 exit function을 추가해주면

header function 이후 작성된 html이 더 이상 보이지 않는다!

이렇게 exit function을 사용하면

redirection은 그대로 수행되는 동시에 페이지 내용이 노출되는 걸 막을 수 있다.

(+) 참고

exit;
exit();
exit(1); // error code
exit("unable to open file"); // message

참고로 exit function은 문구를 출력하거나 error code를 사용하는 등

사용할 수 있는 형태가 다양하다.

Last updated