• ベストアンサー

CGIアプリのセキュリティ強化

CGIの掲示板を会員制にしようと検討しています。 例えば投稿画面が <form action="BB.cgi"> <input ~~~~~~~~~> </form> となっています。しかし気づいたのですが、投稿画面のソースをローカルに保存し例えばinput などを変更しローカルから変更された項目と共に投稿されてしまうケースがあります。( <form action="ここをフルURLに設定しなおすとネットにつなげば投稿できてしまいました">) これを防ぐにはどうしたらいいのでしょうか。 自分が考えた物では指定したページのみのクリエを受け取るようにしてはどうかと思いましたが、このようなシステムを作る知識はありません。 どうぞよろしくお願いいたします。

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

  • ベストアンサー
  • hok212
  • ベストアンサー率66% (100/150)
回答No.1

まずは投稿処理をするCGI側に、投稿元のURLを指定します。 $baseURL = "投稿元のURL(http://から)を指定"; 次に投稿直前に「投稿元チェック関数(refCheck)」を呼び出し、返り値が0ならエラー処理をします。 $ref_flag = &refCheck; if ($ref_flag == 0) { ここにエラー処理 } refCheck関数は投稿処理をするCGIの最後のほうに入れておけばいいです。 sub refCheck { local($ref) = $ENV{'HTTP_REFERER'}; $ref =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg; if ($ref =~ /$baseUrl/i) { return 1; } else { return 0; } } # $ENV{'HTTP_REFERER'}が投稿元のURLで、それに$baseUrlが含まれているか判別をしています。

Intel_404
質問者

お礼

ご回答有難うございました。早速試してみたいと思います。

その他の回答 (1)

  • yuuki0229
  • ベストアンサー率70% (33/47)
回答No.2

> input などを変更し フォームの改竄についてはサーバ側でデータのチェックをする必要があります。 CGIで一番狙われやすい(狙いやすい)場所ではないでしょうか。

参考URL:
http://www.ansi.co.jp/tech/cgi/security/
Intel_404
質問者

お礼

>CGIで一番狙われやすい(狙いやすい)場所ではないでしょうか。 そうですね。それをどう防ぐか質問させていただいてます。

関連するQ&A