• 締切済み

アクセス制限につきまして

こんにちは CGIにアクセス制限をつける方法で悩んでいます。 例えば、CGIのパラメータをPATH_INFOで渡す場合、 http://...../cgi-bin/xxx.cgi/引数 といった呼び出し方ができますが、 http://...../cgi-bin/xxx.cgi/aaa とした場合と、 http://...../cgi-bin/xxx.cgi/bbb とした場合とで別々のパスワードをかけることは可能でしょうか? 単純にhttp://...../cgi-binに対してパスワードをかけるのなら、.htaccessを使ったBASIC認証で十分なのですが、引数別にパスワードを設けたい場合に、なにか便利な方法はないものでしょうか? CGIそのものはperlで書いています。 よろしくお願いします。

  • CGI
  • 回答数2
  • ありがとう数12

みんなの回答

  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.2

<Files> ディレクティブや <FilesMatch> ディレクティブ は .htaccess にも書けるみたいですが、それでもうまくいかないんでしょうか? あるいは ErrorDocument ディレクティブで CGI に処理させる方法は、PATH_INFO の代替手段として使えないんでしょうか? # 私は PATH_INFO を使った事なくてできるはずかどうかも知らないんですが...

  • lesstia
  • ベストアンサー率45% (44/96)
回答No.1

受け取った引数のif文内で制御すればよいのではないでしょうか? if ( $ENV{"PATH_INFO"} eq 'aaa' ) { $pass='aaapass'; } else if ( $ENV{"PATH_INFO"} eq 'bbb' ) { $pass='bbbpass'; } というような感じで。

titokani
質問者

補足

お返事ありがとうございます。 $passに値を代入したあと、いったいどうすればよいのでしょうか・・・・。

関連するQ&A

  • perlなんですが、403エラーについて

    サーバーとperlはつい最近はじめた初心者です。 カテゴリーをどちらにしようか悩みましたが、いろいろを試した結果 こちらに質問することにしました。もしかしたらperlの設定かもしれません。もしも間違っていたら申し訳ございません。 サーバーの種類はCentOS Linux 5 バージョン 1.390です。 バーチャルドメインで3つのドメインを管理しています。 一応以下のように仮定させてもらいます。 AAA.com BBB.com CCC.com 末行に書いたテスト用(test.cgi)をBBB.comのディレクトリーに アップしたところ、403エラーになりました。 パーミッションエラーかなと思い、パーミッションの設定をすべて 行いましたが解決できませんでした。 実際にAAA.comでは普通に稼動しているはずなのに、おかしいな~と 思って、その同じスクリプトをBBB.comにアップしたところ、 きちんと表示されました。 そこで、AAA.comの設定をhttp.confからすべて外してBBB.comのtest.cgi を確認したところ、表示されました。 もしかしたら、複数のドメインでperlを使う場合には、 なにか設定を行う必要があるのでしょうか? バーチャルドメインで設定している内容は以下のとおりです。 ※勝手にリンクマークされるのでwww は xxx に置き換えました。 <VirtualHost ***.***.***.***> DocumentRoot /var/xxx/AAA-com ServerName AAA.com HostNameLookups off UseCanonicalName on ScriptAlias /cgi-bin/ /var/xxx/AAA-com/cgi-bin/ <Directory /var/xxx/AAA-com/cgi-bin/> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> </VirtualHost> <VirtualHost ***.***.***.***> DocumentRoot /var/xxx/BBB-com ServerName AAA.com HostNameLookups off UseCanonicalName on ScriptAlias /cgi-bin/ /var/xxx/BBB-com/cgi-bin/ <Directory /var/xxx/BBB-com/cgi-bin/> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> </VirtualHost> テスト用のスクリプトは以下のとおりです。 #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<html><head><title>CGI-Perl TEST</title>\n"; print "<meta http-equiv='content-type' content='text/html; charset=shift_jis'>\n"; print "</head><body><h2>CGI-Perlテスト</h2>\n"; print "</body></html>\n"; exit;

  • パスワード制限について

    パスワード制限についてなんですが、 AAAというパスワードを入れるとAAA.HTMLへ飛び、 BBBというパスワードを入れるとBBB.HTMLへ飛んでくれるCGIはありますか? 探してみたのですが、 ・1個のIDとPASSで、1個のHTMLへ ・複数のIDとPASSで、1個のHTMLへ など、最終的には皆同じページへ行ってしまうのしかありませんでした。 何かフリーCGIで上記に当てはまるものはありませんか?

    • ベストアンサー
    • CGI
  • アクセス制限をした掲示板について

    現在IDとパスワードの承認を必要とした掲示板の作成を検討しております。例えば有料でレンタルした掲示板に.htaccessを利用してアクセス制限した場合、レンタル掲示板を運営している会社の方は掲示板の中を見る事ができるんでしょうか?やはり、掲示板のCGIを自分で設置して.htaccessでアクセス制限する方が確実でしょうか?また.htaccessのIDやパスワードの管理を容易にする方法(CGIなど)があれば教えて頂けませんか? PS 掲示板をレンタルした場合と自分で掲示板のCGIを設置した場合のそれぞれの問題点などを教えて頂けませんか?よろしくお願い致します。

    • ベストアンサー
    • CGI
  • 同一クラスに同名メソッドは可能???

    現在AAAというクラスにBBBと言うメソッドを作っており、 BBBには現在引数がないのですが、 引数がある場合の処理を書きたい為、 function BBB($xxx) を作りたいと思っておりますが普通に書くだけではエラーになってしまい、 どうにかエラーにならずに書く方法があればと思い質問させて頂きました。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • パスワード制限について

    今度ホームページにパスワード制限をしたメンバーページを作ろうと思います。 そこでクッキーによるパスワード制限と.htaccess(BASIC認証)によるパスワード制限では、どちらが良いと思いますか? メンバーページでは、メール送信や掲示板の書き込みなどをしたいです。つまり出会い系みたいな感じです。それなのでメンバー毎のIDを得たいのです。 BASIC認証ではパスワードの認証は出来るのですが、ユーザー毎のIDを得ることは不可能?だと思いますし、クッキーだとセキュリティ上問題がありそうだし。パラメーターで各ページ事、.cgi?~で送るのも問題だし。 実際出会い系などで用いられるパスワード制限はどのようにやっているのでしょうか?出会い系ではなくとも、そのようなホームページを持っている方はどのようにしていますか?自分としては、パスワードはBASIC認証にして、IDはクッキーから得ようと考えています。 セキュリティーなどの件での投稿も待ってます。

    • ベストアンサー
    • Perl
  • Basic認証ができません

    自宅サーバーを立てました。しかしBasic認証ができません。 httpdに以下のように記述しました。プロテクトフォルダーにアクセスすると認証画面は表示されますが、ユーザー名とパスワードを正しく入れても正しく認証されません。.htpasswdと.htaccessは設置してあります。他に何を設定すればいいのでしょうか? <Directory "C:\www\cgi-bin\protect\members"> AuthType Basic AuthName "会員専用" AuthUserFile C:\www\cgi-bin\protect\members.htpasswd Require valid-user </Directory>

  • perlのエラー処理

    ライブラリ内部で発生したエラーをキャッチする方法がわかりません(>_<) ---------------------------------- #!/usr/bin/perl use XML::AAA; my $aaa = "bbb"; my $ccc = XML::AAA->new($aaa); ---------------------------------- こんなスクリプトを書いたとします。 XML::AAAが、newするときにXML::BBBを使っているとします。 引数が不正でXML::BBBでエラーが発生したときに どうやってそのエラーをキャッチしたらいいかわかりません。 eval{my $ccc = XML::AAA->new($aaa);} if($@){&error_handling;} とやってみても、うまくキャッチできません。 また、$aaaが正しい引数かどうかを確認するのは、ちょっと難しいので、やはり、エラーをキャッチする方向で考えたいです。 ほかにどのような方法があるか教えてください。。

  • cgi-binディレクトリにアクセス制限をかける方法

    ISPにwakwakを使用しているのですが、cgi-binディレ クトリ配下に置いてある掲示板に対してアクセス制限 をかける方法が無いか探しています。 wakwakの仕様で ・cgiはcgi-binディレクトリ配下にのみ設置可 ・htaccessはcgi-binディレクトリ配下では動作不可 というようになっておりお手上げ状態です。 htaccessで制限出来るディレクトリにリンク用のhtml を置いて、そこからじゃないとcgiディレクトリに飛べ ないようにすればと思ったのですが、どうもcgi-bin ディレクトリ(というかCGIに対して)直接アクセス制限 が出来るものが見つからず困っております。 どなたかお詳しい方がいらっしゃいましたらヒントだけ でも頂けると幸いです。

  • CGIのアクセス制限について

    環境は windowsXPHome SP3 / Apache2.2 / ActivePerl5 / (MySQLを使う予定) です。 htdocs\index.html htdocs\ddd\aaa.cgi htdocs\ddd\bbb.cgi のようなディレクトリ構成で、httpd.confは、htdocs以下を公開する設定になっていて <Directory "D:\Program Files\Apache Software Foundation\Apache2.2\htdocs\ddd"> AddHandler cgi-script .cgi Options +ExecCGI </Directory> を指定しました。 これを自宅サーバーとして公開する場合、外部からはindex.htmlにアクセスできるようにして、 aaa.cgiやbbb.cgiはindex.htmlからリンクやformのactionから呼び出されてからしか実行できない (直接cgiのurlを指定して開けない)ようにするにはどうすればいいでしょうか? よろしくお願いします。

    • ベストアンサー
    • CGI
  • 「http://xxx.jp/xxx/xxx.cgi&p=xxx」を処理する方法(&で始まる引数)

    すみませんが教えてください。 http://xxx.jp/xxx/xxx.cgi&p=xxx このような、引数が?ではなく&から始まるリクエストを?の場合と同様の 受け方をする方法はありますでしょうか。 .htaccessでもApache設定でも何かしら方法がございましたら ご教示いただけますと幸いです。 今日1日はまりまくって解決できなかったため、こちらに質問させていただきました。 よろしくお願いいたします。

専門家に質問してみよう