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

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

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

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Q&A

解決済

3回答

4599閲覧

静的ファイルのURLパスがログアウト後も閲覧できるwebサービスはバグではないのでしょうか??

bin_300K

総合スコア56

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

0グッド

1クリップ

投稿2016/12/13 12:48

疑問を書きます。少し長くなりますすみません。

#疑問
静的ファイルの管理設定を勉強中(私自身は、Djangoですが、この話題はPHP、Rubyも共通だと思います)なのですが、

user1というユーザーがログインをしていて、非公開にしておきたい静的ファイルをアップロードしていて、下記のパスにファイルが集められているとします、
<パス1>www.examlple.com/static/img/user1/・・・・

以下の静的ファイルパスはuser1だけが見れるようにして、かつ誰にでも公開してもいいという設定で投稿された静的ファイルは、

<パス2>www.examlple.com/static/img/public/・・・・ のパスに集まっているとしたときに、

<パス1>はログイン後のHTTPリクエストのヘッダのユーザー情報がある限り閲覧できるようにして、<パス2>はURLを知っている人誰でも閲覧可能というふうにしたいと思っています。

参考のために、自分が使っている、色々な大きな規模のウェブアプリを見て、驚いたのですが、<パス1>、<パス2>共にurlさえ知っておけば、ログイン、ログアウト関係なく閲覧できてしまう(各パスは以上に長く設定されている:検索しにくくする工夫でしょうか??)状態なのを見つけました、これはバグではないのでしょうか??

今まで、ユーザーとして下書き保存したコンテンツなどは、各種サイトで公開されていないものと考えて利用していたので、実は静的ファイルだけは、公開されていたというのはちょっとショックなのですが、これは例外的なものなのでしょうか??それとも、現状のインターネットの仕組み上やむを得ないものがあり、利用規約などでご理解いただくという方針のほうが妥当なのでしょうか??

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

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

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

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

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

kei344

2016/12/13 13:22

「静的ファイル」とは具体的に画像のことでしょうか。
bin_300K

2016/12/13 14:18

問いかけありがとうございます。ここでの静的ファイルの定義は、画像、アップロードされたpdfファイルやエクセルファイルなどの動的に作られていないファイル全般を指しています。
KSwordOfHaste

2016/12/13 14:54

「非公開にしておきたい」というのはあなたの希望だということはわかりますが当該サイトでは非公開にすることを保証しているか記載すべきと思います。
guest

回答3

0

質問内容がよくわからないのですが、どちらが質問内容でしょうか? またはこれらとは別でしょうか?

###バグかどうか?

静的ファイルのURLパスがログアウト後も閲覧できるwebサービスはバグではないのでしょうか??

バグかもしれないしバグでないかもしれない。
サービス内容や利用規約、ヘルプ、マニュアル、使用方法説明などで明確に記載されていないのであればバグの可能性はあります。が記載されているのであればそういうサービスです。

###技術的な質問?

<パス1>はログイン後のHTTPリクエストのヘッダのユーザー情報がある限り閲覧できるようにして、<パス2>はURLを知っている人誰でも閲覧可能というふうにしたいと思っています。

全ての静的ファイルへのアクセスにログイン認証を行う方法がわからない?
単純に全てのアクセスに対して

  • ログイン認証(または認証済みであることの確認)
  • アクセス制御(ログインしていればOK? 特定のユーザーのみ?)

を実施後、適切なものを返せばいいだけです(http status:200, 401, 403)

弊害としては、全てのアクセスに対して認証・アクセス制御処理が入るので、必要なサーバーリソースは増える。またレスポンスタイムが遅くなります。

静的ファイルへのアクセスに関するサイト方針(規約)の妥当性を問いたい?

今まで、ユーザーとして下書き保存したコンテンツなどは、各種サイトで公開されていないものと考えて利用していたので、実は静的ファイルだけは、公開されていたというのはちょっとショックなのですが、これは例外的なものなのでしょうか??それとも、現状のインターネットの仕組み上やむを得ないものがあり、利用規約などでご理解いただくという方針のほうが妥当なのでしょうか??

これはサービスの要件次第です。
サービスを提供する側がどういうサービスを提供するか決めるだけです。
「全てのアクセスに認証・アクセス制御を行う」というサービスを提供するのであれば、そのようにする。
そこまでする必要はない要件であれば利用規約など利用者に同意を得たうえでそういう作りにする。

投稿2016/12/14 00:37

編集2016/12/14 00:43
Y.H.

総合スコア7914

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

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

bin_300K

2016/12/15 03:01

ありがとうございましたm(_ _)m そもそもそういうサービスである場合があるのですね!なるほど、利用規約をよく読んでみます^^
guest

0

Webサービスの開発言語や使用フレームワークにもよりますが、多くのフレームワークでは
静的コンテンツでも基本は制限が掛けられています。
→URLのディスパッチャなどを使用してWebサイト全体のどのフォルダへ直接アクセスしても
接続することが出来ない。
認証のプログラムをオーバーライドや継承して、特定のフォルダ配下は認証が必要なくても
閲覧可能という処理を加えれば実現可能かと思います。

bin_300K様の疑問を答えるのであれば、バグというよりも設計ミスと思います。
仮に公開したくない物がURL直接アクセスで見えてしまうような状態は個人情報の漏えいや
ディレクトリトラバーサルなどのセキュリティホールの疑いもあります。
製造のミスではなく、そもそもの設計時点で考慮が足りなかったのではと思います。

基本設計はすべてのフォルダを未公開としておき、公開したいフォルダ配下だけを例外として
認証系から外しておく、として設計を進めればいいかと思います。
昨今の個人情報漏えい事故などを見ると、まずは非公開、そこから公開、という設計、製造をするのは
いかがでしょうか?

投稿2016/12/14 00:31

individual

総合スコア14

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

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

bin_300K

2016/12/15 03:00

ありがとうございましたm(_ _)m いただきましたご指摘から、ちょっとapache,nginxのあたりを改めて学習し直してみようと思います!
guest

0

ベストアンサー

閲覧制限のあるサイトの静的画像は標準で禁止するのは難しいかと

  1. ダウンロード用のプログラムフィルタをかける リライトモジュール
  2. FORM認証のきのうをりよう apache 2.4
  3. リファラチェックを行う

ぐらいかな制限方法

投稿2016/12/13 23:34

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

bin_300K

2016/12/15 02:59

いただいたものでリファラチェックという物を調べると一番実装できそうだなと感じましたので、ベストアンサーとさせていただきました。ありがとうございましたm(_ _)m
Y.H.

2016/12/15 03:23 編集

リファラは容易に偽装できるので簡易なチェックと考えてください。(漏らしてはいけない情報の場合はリファラチェックだけでは利用者に「情報が漏れないようにチェックしてます」といえないものになります。) 偽装用のブラウザのアドインなども豊富にあり簡単に利用できますので。
bin_300K

2016/12/15 05:06

アドバイスいただきありがとうございます!もう少しWebサーバー周りの勉強を進めてみます!^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問