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

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

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

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Debian

Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

Q&A

解決済

1回答

1640閲覧

【python】会員サイト内にある文書ファイルのURL直打ちアクセスを制限する方法

wizqro

総合スコア17

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Debian

Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

0グッド

0クリップ

投稿2018/06/10 15:00

編集2018/06/11 11:05

実現したいこと

現在会員サイトを制作しております。

Cookieを使用したフォーム認証を行っており、
会員サイト内はCGI(python)にてcookieを取得し、認証済みかどうか判定しています。

しかし、会員サイト内にはPDFなどの文書ファイルがあり、
そのURLを直打ちすると、あいだに認証をチェックする機構がないため
未認証でもアクセスできてしまいます。

URLを直打ちした場合、認証済みの場合はそのままファイルアクセスでき
未認証の場合でも認証画面へ遷移し、認証を行うようにすることは可能でしょうか。

補足情報(FW/ツールのバージョンなど)

Apache/2.4.25
Python 3.5.3

a2enmodでcgiを有効にし、cgi-binディレクトリ上で.pyを実行しております。

調べてみると、PHPの場合は.htaccessからphpを呼び出しチェックを行うことができるようです。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=46780&forum=10

よろしくお願いします。

追記

.htaccessにてpythonコードを呼び出す方法の場合、
以下の点が分からず困っております。

・PHPの$_SERVER["REQUEST_URI"]のようなリクエスト元URLを取得する方法
・pdf等のファイルの中身を出力する方法

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

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

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

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

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

CHERRY

2018/06/10 21:37 編集

.htaccess から呼び出すのは、PHP じゃなくても Ruby や Python で書かれた認証チェックプログラムでも大丈夫です。  プログラムで認証されているかチェックして認証されていたら、ファイルに応じた httpヘッダをつけてファイルの中身を出力すればOKです。
wizqro

2018/06/11 11:08

ご回答ありがとうございます。.htaccessを使用する方法について、躓いたことが漏れておりましたので追記させていただきました。
guest

回答1

0

ベストアンサー

まずは、ヒントだけ...
下記のような CGI をおいて、 .htaccess でリダイレクトしてみましょう。

.htaccess

RewriteEngine on RewriteRule ^.*.(pdf|doc|xls|ppt)$ /download.cgi [L]

download.cgi

python

1#!/usr/bin/python 2# coding: UTF-8 3 4import os 5 6print "Content-type: text/plain\n" 7 8for key, value in os.environ.items(): 9 print "%s : %s" % (key, value)

http://example.com/test.pdf でアクセスすると

REQUEST_URI : /test.pdf 

という情報が得られます。

投稿2018/06/11 11:18

編集2018/06/11 11:20
CHERRY

総合スコア25171

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

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

wizqro

2018/06/11 13:44 編集

いただいたヒントを元に、pythonにて認証・pdf等のファイルの中身をヘッダ付きで出力するところまで作ることができました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問