
環境は
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を指定して開けない)ようにするにはどうすればいいでしょうか?
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
aaa.cgiにサーバがアクセスするんでない限り、アクセスもとは接続者だよ。
リンクからたどったとしても、接続リクエストを行うのはクライアントだからね。
もしlocalhostとしてcgiにアクセスしたいなら、サーバマシンにクライアントアプリケーションが存在して、それを使ってリクエストすることになる。
でも、そうなるとそのサーバにあるクライアントソフトウェアの制限は・・・となって、結局堂々巡りになります。
cookie食わせるとか、その程度しか方法ないんじゃないかねぇ・・・。
top.htmlじゃなくてtop.cgiとかにして、ランダムな文字列を記入したCookieを食わせておいて、それと一緒に一定時間だけサーバのデータベースに同じ文字列を保存しておく。
aaa.cgiにアクセスしたときに、cookieの文字列とデータベース内の文字列が一致した場合、アクセスを許可する・・・とか。
厳密にtopからのアクセス以外をはじくわけではないですが・・・。
回答ありがとうございます。
簡潔な解決策はないのですね。
> aaa.cgiにサーバがアクセスするんでない限り
サーバがアクセスとはサーバ(aaa.cgi)から他のCGI(bbb.cgi)を呼び出すという事でしょうか?
(aaa.cgiがhtmlを吐くように書かれていてそのhtmlのformのactionが呼び出す等)
No.4
- 回答日時:
この方がいいか?
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^127.0.0.1$
RewriteCond %{HTTP_REFERER} !^.*/index\.html$ [NC]
RewriteRule .* /404.html [L]
No.3
- 回答日時:
CGIの中かmod_rewriteを使ってリファラを見て弾く。
リファラも偽装できるけど。。以下、未確認だが.htaccessの例
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^127.0.0.1$
RewriteCond %{HTTP_REFERER} ^$
RewriteCond %{HTTP_REFERER} !^.*\.html$ [NC]
RewriteRule .* /404.html [L]
No.1
- 回答日時:
回答ありがとうございます。
紹介してもらったページに書いてある内容は他の所でも見たのですが、
よく理解できません。
リファラーは偽装できるらしいので、それ以外の方法を取るとして、
ホストで制限となるとどうなるんでしょうか。
例えば任意の第3者がindex.htmlにアクセスしてそこからリンクでtop.cgi
にアクセスする時、top.cgiにアクセスしたのはindex.htmlファイルの存在する
127.0.0.1(localhost)となるのでしょうか?
それならdddディレクトリに127.0.0.1(localhost)のみ通過するように指定すればいい
事になりますが、そうでなく、top.cgiにアクセスしたのは第3者のIPでどこから接続
されるか任意なので、除外指定しようにもできないと思います。
何かうまい方法は無いものでしょうか、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
apacheでPerl CGIが作動せず、5...
-
CGI.pmはもう古い!?
-
エクセルで集計したい。
-
ホームページにメールフォーム...
-
ChatGPTの性能は昔に比べて上が...
-
ChatGPT
-
chatGPTみたいに画像生成出来る...
-
古ーくからフリーのtree.cgi掲...
-
CGIで出力するhtmlの<!DOCTYPE ...
-
CGIで得た内容をHTMlページに代入
-
iDeCo
-
皆さんはGUCCIはハイブランドだ...
-
cgi-binのエラー?
-
Trees掲示板CGI(CGI-Resque氏...
-
めちゃきれい
-
number 改行が追加できない
-
生成AI画像について
-
3DCG
-
cgi アクセス制限 エラー
-
CGIの記述について教えてくださ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レンタルのcgiでパスワード認証...
-
自社サーバー異常発生。CGIがポ...
-
CGIが吐き出したファイルの所有...
-
cgi-binフォルダが空?
-
public_html外でCGIやPHPを動か...
-
cgiの改造 ディレクトリの移動
-
CGIで書き出されるページにHTML...
-
ホームページに来た人を携帯用...
-
Mozilla/3.01 (compatible;)と...
-
public_html/index/以下へのCG...
-
Apacheをlocalhostで動かしてい...
-
htmlで表示できるリンク集あり...
-
Apache2.2で直リンクの禁止
-
postmailについて CGIかも? ...
-
html→shtml
-
htmlにアクセスと同時に、あるC...
-
htaccessでのクエリ付URLのリダ...
-
perlの設定
-
ログインIDとパスワードでジャ...
-
http://tydsu.com/oeder と後ろ...
おすすめ情報