こんにちは、webプログラマーwishigrowです。

難しくて、勉強になったのでメモ&共有
画像への外部からのアクセス禁止について。

状況

wordpressで会員制サイトを構築し終わりました。
ログイン状況を取得して、表示するかどうかを分岐させる。
会員用の投稿フォームをつくる。
など、なかなか手ごわいサイトでした。

完成したかと思いきや、ログインしていなくても画像ファイルが見れてしまうというのです。
これは困った。

何が問題か?

画像のURLが分かってしまうと、直接入力するとそれが表示されてしまう。
PHPでのログイン分岐とか関係なく、会員じゃなくても画像を見れてしまうのです。

まぁ、Webってそういうものなのですよ。
ファイル流出で問題になることもある。

解決策

アクセス制限をかければ良いということは分かる。
画像が入っているディレクトリに「.htaccess」というのを書くと、パスワードで保護したりできるのは知っている。

しかし、何を書けば良いのか?

Deny from all

「Deny from all」と書けば、すべてのアクセスを制限できます。

『これだったら、誰にも見られないなぁ、良かったなぁ』って思っていたら、
自分にも見れない!
見せたいPDFも見せられなくなる。

「Allow from wishigrow.com」と書けば、wishigrow.comからのアクセスのみ許可することになるのでいけるかと思ったが、自分のサイト内なので、画像へアクセスはダダ漏れのまま。

ダメです。

その他

パスワードで保護する方法、別ページに飛ばす方法などがあり、やってみたが、意味なかった。

画像ファイルだけアクセス制限

特定の拡張子だけアクセス制限する方法もある。
「<Files ~ “\.jpg$”>
Deny from all
</Files>」

『これは行けたか!』って思ったけど、
「Deny from all」と同じ効果なので、表示させたい場所にも表示できなくなる。

お手上げか?

よくわからないけど、できた

一度、振り出しに戻して、一生懸命にネット検索しました。
検索フレーズが難しいんですよね。

しかし、こちらのサイトに良いものを書いてくれています。
画像への直リンクを防ぐ .htaccess

ちょっと修正してやってみたら上手く動作しました。
gatespaceさん、ありがとうございます。

「.htaccess」には色々な書き方があるんですね。
Webは奥深いなぁ。
常に勉強しなければいけない厳しい世界だ。

では、以上です。

Webサイトづくり、ブログ運営などの相談があれば、ご連絡下さい。
ややこしいことをしない、効率的な方法を教えます。

投稿者: wishigrow

ウィッシグゥローと発音してください。 対面交流の場づくりを追求中です。コントラダンス/サルサダンス/京都伏見スイーツ人狼/石黒酒場などを実施。 Webサイト制作や調理の仕事で生計を立てている。 趣味は盆踊りとジョギングとブログ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です