質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

Q&A

解決済

1回答

2183閲覧

carrierwaveでの画像アップロード時に悪意のあるコードの実行ができるかどうか

nama-chan

総合スコア31

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

0グッド

2クリップ

投稿2018/07/20 06:36

編集2018/07/20 06:42

Rails5.1でcarrierwaveを使って画像をアップロードする機能を作成しました。
バリデーションとしては

  • 拡張子チェック(画像ファイルだけ)
  • ファイルサイズ制限

ユーザ
ユーザー登録済みであれば編集ページから自分の画像としてアップロードできます。

保存場所は

  • public/uploads以下

アクセスは

この時、セキュリティ的に脆弱性はあるのでしょうか?
画像に扮して攻撃コードを挿入して被害がでることがあるのでしょうか?
被害が出る場合どのようにして防げばよいのでしょうか???

宜しくおねがいします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ご提示いただいた情報だけでは確たることは言えないのですが、気になったポイントのみ指摘します。

(1)ファイル名の付け替えはしているか?
たとえば、利用者が foo.php.png というファイル名で画像ファイルをアップロードした場合に、サーバー上のファイル名が foo.php.png のままというケースでは、このファイルがPHPスクリプトとして認識される可能性があります。詳しくは以下の記事をお読みください。

Apacheの多重拡張子にご用心

対策は上記記事に書いています。

(2)画像ファイルによるXSS
画像の拡張子を検証しているということですが、Content-Typeは大丈夫でしょうか?Content-Typeが間違っていると、画像ファイルがtext/htmlと認識されて、画像ファイル中のJavaScriptが動いてしまうことはあり得ます。
IE7までですと、対策が結構めんどうだったのですが、IE7以前はサポートしない前提なら、以下のレスポンスヘッダを出しておくと、安全性が高まります。Content-Typeは正しいというのが前提です。

X-Content-Type-Options: nosniff

サイトの脆弱性診断をしたわけではないので、「安全です」とか「問題ありません」とは言えません。心配ならば、専門家の診断を受けることをお勧めします。画像のアップロードは脆弱性が入り込みやすい箇所です。

投稿2018/07/21 04:34

ockeghem

総合スコア11701

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nama-chan

2018/07/23 02:24

ockeghemさん ご回答ありがとうございます。 (1)ファイル名の付け替えはしているか? Apache+phpの場合に多重拡張子の問題がること理解しました。Apache+Railsの場合も問題があるかどうが調査してみます(軽くみたところないようでした)! ファイル名の付け替えについては、アップロードされたファイルに対しては別途ランダムなファイル名.アップロードされた拡張で生成しています。 (2)画像ファイルによるXSS RailsではではデフォルトでレスポンスヘッダにX-Content-Type-Options: nosniffを設定しているようでした。これで拡張子通りに画像として表示されると思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問