私は現在、画像をアップロードするためのアップロードクラスを作成しています。アップロードされたイメージがサポートされているタイプであることを確認する拡張チェックを行い、アップロードされたファイルを休憩場所にコピーすると、写真は常にchmod(0664)になります。これは比較的安全ですか?私は画像のエンコーディングについてはあまりよく分かりませんが、誰かが私の内線チェックを邪魔してしまったとしても、他の場所にセキュリティホールがなく、攻撃者が既に私のファイルに入っていない限り、システム、正しい?拡張チェックは次のとおりです。ファイルのアップロードとセキュリティ
ここでは、アップロードされたファイルを最終的な休憩場所にコピーする機能があります。
if ($_FILES[$this->uploadName]['error'] === UPLOAD_ERR_OK){
$newfile = $this->uploadDir.$this->theFile;
if (!move_uploaded_file($this->tempFile, $newfile)) {
$this->error[] = "The file could not be moved to the new directory. Check permissions and folder paths.";
die($this->error_text());
}else{
$this->error[] = "The file ".$this->originalName." was successfully uploaded.";
if ($this->renameFile == true){
$this->error[] = $this->originalName." was renamed to ".$this->theFile;
}
chmod($newfile , $this->fileperm);
}
}else{
$this->error[] = $this->file_upload_error_message($_FILES[$this->uploadName]['error']);
die($this->error_text());
}
何とか何とか実行されることはないと確信するには、その周りにラッパースクリプトを作成してください。ラッパースクリプトはヘッダー( "Content-type:$ mime_type")を実行し、ファイルの内容をstdoutにダンプする必要があります。 mime-typeを調べるには、fileinfo pecl拡張子(http://us3.php.net/manual/en/ref.fileinfo.php)を参照してください。 – Friek