[php] PHP를 사용한 파일 업로드와 파일 확장자 검사

파일 업로드는 웹 애플리케이션에서 자주 사용되는 기능 중 하나입니다. 그러나 파일 업로드 시 보안과 안전을 고려해야 합니다. 이를 위해 파일 확장자를 검사하여 허용된 파일 형식인지 확인하는 기능을 추가하는 것이 좋습니다.

1. PHP를 사용한 파일 업로드 기능

PHP에서 파일을 업로드하는 기능은 $_FILES 배열을 사용하여 처리할 수 있습니다. 아래는 간단한 파일 업로드 예제입니다.

<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="Upload">
</form>
<?php
$targetDirectory = "uploads/";
$targetFile = $targetDirectory . basename($_FILES["file"]["name"]);
move_uploaded_file($_FILES["file"]["tmp_name"], $targetFile);
echo "File uploaded successfully.";
?>

위의 코드는 파일을 선택하고 업로드하는 간단한 형태의 웹폼과 파일을 실제 서버에 업로드하는 PHP 코드입니다.

2. 파일 확장자 검사 추가

파일 업로드 시에는 추가적인 보안 검사를 수행해야 합니다. 특히 파일의 실제 형식을 확인하기 위해 파일 확장자를 검사하는 기능을 추가하는 것이 중요합니다.

<?php
$allowedExtensions = array("jpg", "jpeg", "png", "gif");
$fileExtension = pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION);
if (!in_array($fileExtension, $allowedExtensions)) {
    echo "Only JPG, JPEG, PNG, and GIF files are allowed.";
} else {
    move_uploaded_file($_FILES["file"]["tmp_name"], $targetFile);
    echo "File uploaded successfully.";
}
?>

위의 코드는 업로드된 파일의 확장자를 확인하고, 허용된 파일 형식인지를 검사합니다. 허용된 확장자가 아닌 경우에는 업로드를 거부하고, 그 이외에는 파일을 서버에 저장하게 됩니다.

이와 같은 파일 업로드와 확장자 검사 기능을 추가하면, 웹 애플리케이션에서 안전하게 파일을 업로드하고, 보안에 신경쓸 수 있습니다.

위와 같은 코드는 실제 사용되는 환경 및 상황에 따라 다양하게 세분화될 수 있습니다. 파일 업로드와 보안 기능을 추가할 때에는 보안 전문가의 조언을 구하는 것이 좋습니다.

참고 자료