[php] PHP 라이브러리 S3 파일 다운로드 시 안전한 파일명 보장

파일을 Amazon S3에서 다운로드 할 때, 파일명에 대한 보안상 주의가 필요합니다. 사용자가 업로드한 파일명이나 S3 저장소에서 사용하는 파일명이 잠재적으로 악의적인 스크립트를 포함할 수 있기 때문입니다. 이런 경우, 파일명을 안전하게 다운로드할 수 있는 방법을 알아보겠습니다.

문제 해결

Amazon S3 PHP 라이브러리를 사용하여 파일을 안전하게 다운로드하는 방법은 파일명을 안전하게 구성하는 것입니다. 파일명에 포함된 특수문자나 공백 등을 제거하고 유효한 파일명으로 변경하는 작업이 필요합니다. 이를 위해 Content-Disposition 헤더를 설정하여 브라우저가 파일을 다운로드 할 때 올바른 파일명으로 표시하도록 할 수 있습니다.

다음은 PHP를 사용하여 S3에서 파일을 다운로드하고 안전한 파일명을 보장하는 예제 코드입니다.

use Aws\S3\S3Client;

// S3 클라이언트 생성
$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-west-2'
]);

// 다운로드할 파일의 Key와 Bucket 설정
$key = 'example.jpg';
$bucket = 'my-bucket';

// 파일 다운로드 및 안전한 파일명 설정
$result = $s3->getObject([
    'Bucket' => $bucket,
    'Key'    => $key,
    '@http'  => [
        'sink' => '/path/to/save/example.jpg',
        'headers' => [
            'Content-Disposition' => 'attachment; filename="safe_filename.jpg"'
        ]
    ]
]);

위 예제에서 Content-Disposition 헤더를 설정하여 안전한 파일명인 safe_filename.jpg으로 다운로드 할 수 있습니다.

결론

Amazon S3를 사용하여 파일을 안전하게 다운로드하기 위해 파일명에 대한 보안을 고려해야 합니다. 안전한 파일명을 보장하기 위해 Content-Disposition 헤더를 사용하여 브라우저가 올바른 파일명으로 파일을 저장하도록 지시할 수 있습니다.