web-dev-qa-db-ja.com

ユーザーがアップロードしたファイルをWebフォルダーの外部に保存し、自分のページで使用するにはどうすればよいですか?

ユーザーがアップロードしたファイルでセキュリティを確保するための最良の方法の1つは、ユーザーがアップロードしているjpg画像が実際にアップロードであることを確認するためにできることはほとんどないため、それらをWebフォルダの外部に保存することですMIMEが偽装されるなど)

ただし、この目標を達成する方法についての良いチュートリアルを見たことはありません。 Linuxボックスでホスティングを管理しており、Webフォルダーは/public_html/であるため、ファイルを/useruploads/に保存しながら、PHP/htmlを使用してファイルを提供するにはどうすればよいですか?

3

ファイルをwebrootの外に置きます。次に、PHPを使用して、ファイルをスクリプトに渡します。

サンプルPHP:

<?php
    $file = '/full/path/to/useruploads/secret.pdf';

    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' . basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
?>
2
John Conde