画像ファイルをアップロードするPHPのスクリプトを作っています。
現在、セキュリティ的な観点から下記のような施策を行っていますが、他にすべきことはありますでしょうか。
lang
1// 拡張子「jpg」「jpeg」「gif」「png」のファイルのみ許可する 2$ext = strrchr($file, "."); 3if ( !in_array($ext,array(".jpg",".jpeg",".gif",".png")) ) { 4 die("この拡張子のファイルは対応していません。画像ファイルをアップロードしてください。"); 5} 6 7// ファイルのMIMEタイプを制限する 8$pos = strpos($_FILES['myfile']['type'],"image"); 9if ( $pos === false ) { 10 die("許可されていないファイル形式です。"); 11} 12$arr = getimagesize($_FILES['myfile']['tmp_name']); 13if ( ($arr["mime"] != "image/gif") && ($arr["mime"] != "image/jpeg") && ($arr["mime"] != "image/jpg") && ($arr["mime"] != "image/png") ) { 14 die("許可されていないファイル形式です。"); 15} 16if ( substr_count($_FILES['myfile']['type'], "/") > 1 ) { 17 die("許可されていないファイル形式です。"); 18} 19 20// アップロード後、ファイル名を変更する 21$new_name = $upload_dir . md5(basename($_FILES['myfile']['name'])) . $ext; 22if ( move_uploaded_file($_FILES['myfile']['tmp_name'], $new_name) ) { 23 print "<img src=\"./temp" . $file . "\">"; 24} else { 25 die("エラーが発生しました"); 26}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。