サーバーにファイルをアップロードするスクリプトがあります ここに私のコードがあります
ユーザーがサーバーにファイルをアップロードするとき
私のスクリプトはファイルの名前を変更し、詳細を db に保存します。
ファイルを Web ルートの外に配置します。
私のアプローチは安全ですか?
サーバーにファイルをアップロードするスクリプトがあります ここに私のコードがあります
ユーザーがサーバーにファイルをアップロードするとき
私のスクリプトはファイルの名前を変更し、詳細を db に保存します。
ファイルを Web ルートの外に配置します。
私のアプローチは安全ですか?
はい、あなたのアプローチは安全です。すべてのファイルが Web ルートの外にアップロードされるためです。URL 経由で直接アクセスすることはできません。
次のように、ファイルに対してさらに入力の検証を行う必要があります。
ファイルサイズを確認する
「File Type Recogniser」でファイルの種類を確認します
コンテンツヘッダーを確認する
ファイル アップロードのベスト プラクティスは、 https ://www.owasp.org/index.php/Unrestricted_File_Upload で確認することもできます。
サーバー上でファイルを実行しないでください。
コンテンツタイプを確認するには(私はこれを自分でやったことがありません)、次のようなものを試すことができます:
$file = "path2file";
$finfo = new finfo(FILEINFO_MIME);
$type = $finfo->file($file);
if(in_array($type,array("application/zip", "application/x-zip", .. whatever content types are ok...)))
//you passed