前提・実現したいこと
現在、PHPで画像の投稿ができるWebサイトを作成しています。
インターネットや書籍で調べ、以下のようにバリデーションを実装しています。
安全性が不十分な箇所・追加するべき処理などがありましたら教えていただきたいと思い質問させていただきました。
まだまだPHPの勉強をしている最中で、当たり前のことができていないかもしれませんが、どうぞよろしくお願いいたします。
該当のソースコード
$fileName = basename($_FILES['image']['name']); $fileSize = $_FILES['image']['size']; $fileErr = $_FILES['image']['error']; if(!empty($fileName)){ if(count(token_get_all($fileName)) >= 2){ $error['image'] = 'scp'; } if($fileSize > 8388608 || $fileErr == 2){ $error['image'] = 'size'; } $allow_ext = array('jpg', 'jpeg', 'png', 'gif'); $file_ext = pathinfo($fileName, PATHINFO_EXTENSION); if(!in_array(strtolower($file_ext), $allow_ext)){ $error['image'] = 'type'; } if(count($error) === 0){ $save_fileName = date('YmdHis') . $fileName; if(is_uploaded_file($_FILES["image"]["tmp_name"])){ if(move_uploaded_file($_FILES["image"]["tmp_name"], "./image/" . $save_fileName)){ ; } else { $error['image'] = 'false'; } } } }
あなたの回答
tips
プレビュー