をアップロードすることを許可:だけでpdfファイルは、私が唯一のPDFファイルをアップロードすることを可能にするように、私は、コードのこのビットを変更するにはどうすればよい
unless @file.content_type =~ /^image/
errors.add(:file, "is not a recognized format")
return false
end
をアップロードすることを許可:だけでpdfファイルは、私が唯一のPDFファイルをアップロードすることを可能にするように、私は、コードのこのビットを変更するにはどうすればよい
unless @file.content_type =~ /^image/
errors.add(:file, "is not a recognized format")
return false
end
は、アプリケーション/ PDFファイルであることが、PDFのMIMEタイプ使用していませんしたがって、それだけでなければなりません:
unless @file.content_type =~ /^application\/pdf$/
もちろん、コードはひどく安全ではありません。これは、MIMEタイプを正しく取得するためにファイルを送信するブラウザに依存しており、誰もハッキングされた要求を送信していないことを前提としています。
ファイルを開いて解析しない限り、特定の形式に対して有効なファイルが何であるか知っていれば、アップロードされたファイルが特定の種類であることを確認できません。あなたはしているつもりました
:
ブラウザが提供するMIMEタイプに依存することはできません。 これを行う方法は、ファイルを確認することです。マーカーなどで形式を確認できますが、最も簡単で最も堅牢な方法は、適切なライブラリ呼び出しで開くことです。
MIMEタイプに依存できないのはなぜですか? – alamodey
私は、任意のWebライブラリを使用して、ウイルスが入った.exeや.msi(または非MSの同等のもの)をアップロードし、アプリケーション/ pdfと主張することができます。 Webブラウザによっては、後でダウンロードすると素朴なユーザーが害を受ける可能性があります。 –
これは正しいです。もちろん、MIMEタイプに基づいてファイルを拒否することはできますが、最終的には安全なパーサーを使用してエラーを処理する必要があります。 –