• ベストアンサー

CGIの外部リモート攻撃を防ぐ方法

掲示板等のCGIで、実際CGIが実行されているURLにはアクセスしないで、 各項目のinput name等を読み込み、CGIのURLをフルパスで記述して 他のURLから書き込み等を実行してくる族がいます これを防ぐ方法はありますでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • uuing
  • ベストアンサー率25% (53/206)
回答No.3

言語はPerlでいいのかな? ---------------------------------------------- #スクリプトのパス $script_path = "http://www.hoge.com/fuga.cgi"; #リファラ照合 sub ref_check { $ref = $ENV{'HTTP_REFERER'}; $ref =~ s/\?.*//; if($ref eq $script_path){&ban;} } #キック処理 sub ban{ print "Content-type: text/html;\n\n"; print "<html>\n"; print "<body>\n"; print "書き込みはシカトされますた。\n"; print "</body>\n"; print "</html>\n"; exit; } ---------------------------------------------- こんな感じでしょうか。 必要に応じて適当に改造してください。

MakoNako
質問者

お礼

エラー処理まで書いていただいて、感謝いたします ありがとうございましたm(_ _)m

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

CGIでHTTP_REFERを確認し、自ホストからのリファーでない物を弾くようにしましょう。

MakoNako
質問者

補足

ありがとうございます できれば該当するCGI内に追加する記述を教えていただければ幸いです

全文を見る
すると、全ての回答が全文表示されます。
  • uuing
  • ベストアンサー率25% (53/206)
回答No.1

環境変数からリファラを拾って,スクリプトのパスと比較すれば弾けるのではないでしょうか。

MakoNako
質問者

補足

なるほど、ありがとうございます できれば記述を教えていただければ幸いです

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • CGIでCGIを呼び出す方法

    いつもお世話になっています。 今掲示板のCGI(a.cgi)上に広告をランダムで表示するCGI(b.cgi)を記述しているのですがどうにも正しく表示されず困ってます… 他のCGIを呼び出すにはどのように記述すればいいのでしょうか? (htmlでいうとSSIで呼び出すように…)

    • ベストアンサー
    • CGI
  • CGIでチェックボックスを使う方法

    チェックボックスをCGI(C言語)で使用する方法を教えて下さい。 例えば、HTMLで <input type="checkbox" name="Check1" value="Sel11" /> チェック1 選択1<br /> <input type="checkbox" name="Check1" value="Sel12" /> チェック1 選択2<br /> <input type="checkbox" name="Check1" value="Sel13" /> チェック1 選択3 <hr /> <input type="checkbox" name="Check2" value="Sel21" checked /> チェック2 選択1<br /> <input type="checkbox" name="Check2" value="Sel22" /> チェック2 選択2<br /> <input type="checkbox" name="Check2" value="Sel23" checked /> チェック2 選択3 というプログラムはCGI(C言語)ではどの様に記述すれば良いでしょうか?

    • ベストアンサー
    • CGI
  • cgiの記述方法について

    よろしくお願いします。 お問い合わせフォームを作成したくhtmlに以下の記述をしました。 やはり、これではフォームは機能しないようで、form action="../・・ にまだ何かを記述する必要があるようなのですが、書籍を見ても解決出来ずに困っております。 どなた様か、ご指導の程よろしくお願いします。 ご指導いただくにあたり、どこまでの説明が必要なのか分からなかったため、このようなご説明になってしまいましたが、よろしくお願い致します。 【html】 <form action="../cgi-user/questionform.cgi" method="post"> <p>お名前 <br /><input type="text" name="メルマガお名前" size="40" /> </p> <p>メールアドレス <br /><input type="text" name="email" size="40" /> </p> <p> <input type=submit value="登録" /> <input type="reset" value="リセット" /> </p> </form>

    • ベストアンサー
    • CGI
  • CGIを実行する方法

    ホームページに来訪者があったとき、 必ず指定のCGIを実行する方法を調べています。 今、取り入れてる方法は <head></head>の間に、 <script src="~.cgi"></script> と記述して指定しています。 この他によい方法があれば教えてください。 それと、今取り入れてる方法の問題点の指摘などよろしくお願いします。

    • 締切済み
    • CGI
  • CGIへの引数の渡し方

    直接プログラミングと関係あるかは分かりませんが、 Webなどでよく見る送信ボタンなどの、いわゆる"submit"を押したとき、 CGIが呼び出されることがよくあります。 実は今、あるページから項目を入力して送信ボタンを押すという行為を定期的に繰り返しているのですが、それをプログラムで書きたいと思いました。 そこで質問なのですが、"submit"などからCGIを呼び出したとき、CGIはいったいどうやって入力されたデータなどを読み取っているのでしょうか? CGIについての知識はあまりないのですが、引数として渡されるのでしょうか? (http://aaa.bbb/ccc.cgi?name=100 見たいな感じで) ちょっと調べてみたら上のような感じだと書いてあったので、web上のcgiが呼び出されるhtmlのソースを呼んで、Inputのnameがnameだったので、 ?name=abc としたのですが、何も起こりませんでした・・・ その当たりがよく分からないのでどなたか教えていただけると助かります。

    • ベストアンサー
    • CGI
  • cgi の入力チェック

    ***** HTML ***** <TD> <INPUT type="radio" name="ABC_*" value="登録する">登録する  <INPUT type="radio" name="ABC_*" value="登録しない">登録しない </TD> ***** CGI ***** $family = "ABC"; if($name eq "$family"){ $family=$value; } 現在、上記のような記述で作っているのですが、 チェックを入れても、入れなくても、「入力エラー」 になりません。 他の項目については、OKなんですが。。。 どのように、入力チェックをすればいいのですか? **ちなみに、OKな項目の記述です。** ***** HTML ***** <TD>登録カテゴリー:</TD> <TD> <select name="カテゴリー_*"> <option value="" selected>選  択 <option value="自動車関連">自動車関連 <option value="お役立ちサイト">お役立ちサイト <option value="HP作成支援">HP作成支援 <option value="お店のHP">お店のHP <option value="個人のHP">個人のHP <option value="その他">その他 </select></TD> ***** CGI ***** $catego = "カテゴリー"; if($name eq "$catego"){ $catego=$value; }

    • ベストアンサー
    • CGI
  • CGIについて。

    CGIについて。 今、少し古めのホームページを作るための本を見ているのですが、 その中で「CGIはセキュリティーの関係上ほとんどのプロバイダが使用を制限しています」と書いてあります。 それで質問なのですが、 ・CGIを使えばセキュリティーが弱くなるということですか? ・プロバイダによって違うかもしれませんが、制限ということはアクセスカウンターや掲示板などCGIの種類によっては使用できるものと出来ないものがあるということですか? ・アクセスカウンターや掲示板などCGIで出きることは他のプログラムでも作ることはできますか? よろしくお願いします。

  • PHPをCGIとして実行する方法

    PHPをCGIとして実行する方法 現在PHP(モジュール版)にて開発を行っているのですが、 仕様上.htaccessを使用してcgi-binディレクトリ内にあるphpファイルをCGIとして 実行しなければならなくなりました。 下記の記述方法だと500エラーが発生してしまい、大変困っています。 <Directory "/usr/~(任意のcgi-binディレクトリのフルパス)~/cgi-bin"> AddType application/x-httpd-cgi .php </Directory> 因みに.htaccessはcgi-binディレクトリの1階層上に設置しています。 単に「AddType application/x-httpd-cgi .php」を記述する分には誤作動は起さないのですが、出来れば指定のディレクトリ内だけで指定したいと考えています。 もし思い当たる点がありましたら、ご教授お願い致します。 下記に環境を記しておきます。 【環境情報】 OS:FreeBSD 6.2(レンタルサーバ) PHP:5.2.4

    • ベストアンサー
    • PHP
  • exec cgi ="aaa.cgi" を有効にする方法

    <!--#exec cgi="./aaa.cgi" --> を記述したshtmファイルからcgi を呼び出そうとすると スクリプト './test6.cgi' を実行できませんでした: Win32 エラー コード = 2 と表示されて実行できません。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpiis/iishelp/iis/htm/core/iiregwww.asp を参考に、レジストリを書き換えても出来ません。 どう設定すれば実行できるようになるのでしょうか? IIS5.0(w2000pro) + ActivePerl

    • ベストアンサー
    • CGI
  • 外部.jsの内容を一部置き換えて読み込む方法

    お世話になります。 index.htmlに AAA.js という外部.jsを読み込ませてフォーム送信させようとしています。 AAA.jsには document.write("<INPUT NAME=\"return_url\" TYPE=\"hidden\" VALUE=\"http://www.my-site.com/p-123.html\"><INPUT NAME=\"to_do\" TYPE=\"hidden\" VALUE=\"touroku\"><input type=\"submit\" name=\"comm1\"/>" value=\"書き込む\""); というソースが入っており、 index.htmlには <INPUT NAME="return_url" TYPE="hidden" VALUE="http://www.my-site.com/p-456.html"> というタグが含まれています。 この場合、1組の<form></form>内に、同じ「return_url」で、片や p-123.html、片や p-456.html と、矛盾する2つの指定をしてしまっていることになりますから、これではフォームが成り立ちません。 都合により、このindex.htmlの<form></form>内にはどうしても AAA.js を読み込ませなければならないのですが、「return_url」だけはp-456.html に書き直してフォームを送信しなければなりません。 AAA.jsは私が作ったものではなく、他ページでも読み込むので、AAA.js は<INPUT NAME=\"return_url\" TYPE=\"hidden\" VALUE=\"http://www.my-site.com/p-123.html\">という記述を外すことも他のソースを付け加えることも出来ないのですが、 index.html側に何か手を加えることで、この AAA.js で指定されているp-123.htmlをp-456.html に置き換えてフォームを送信するようにすることは出来ないでしょうか? 方法をご存知の方がいらっしゃいましたら、どうかよろしくお願い致します。

このQ&Aのポイント
  • 耳に異常を感じ、病院での診断もあいまいな回答で不安になっている方へ。耳鳴りの症状について詳しく説明し、病院の誤診の可能性や他の病院での診察の必要性について解説します。
  • 耳に異常を感じて病院に行ったものの、難聴ではないと診断された経験はありませんか?耳鳴りの症状や聴力の変化について詳しく解説し、他の病院での診察のメリットについてもご紹介します。
  • 耳に異常を感じ、病院での診断結果に疑問を持っている方へ。耳鳴りの原因や症状の特徴、他の病院での診察の必要性について詳しく説明します。病院の評判や誤診の可能性なども考慮しながら、正しい診断を受けるためのアドバイスをお伝えします。
回答を見る