人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Perl でCGIを組んでいます。

HTML上のフォームで、
method="post"
を指定していた場合、無理矢理GETでCGIにデータを送った場合はどうなるでしょうか?

http://www.test.cgi/test.cgi?kind=1111

といった感じで、本来ならばフォームから送信されるべきのkindが、アドレスに直接うちこまれてtest.cgiが受け取るのです。

どちらも、通常通り動くのでしょうか?

質問がつたなくてすいません。

●質問者: zachouR
●カテゴリ:インターネット ウェブ制作
✍キーワード:CGI Perl test アドレス データ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● GoldenDawn
●27ポイント

GET と POST ではデータの受けとり方が違うので、POST を前提として作られたスクリプトではデータが取り出せません。

両対応するのもそれほど難しくはないと思いますが。

http://www.futomi.com/lecture/form/index.html

◎質問者からの返答

回答ありがとうございました。

参考にさせて頂きます。


2 ● rev-9
●27ポイント

CGIの作りによる、ということになります。

まずサーバー側の仕組みとしては、POSTとGETとではまったく異なる手法でCGIプログラムにパラメーターが渡されます。ですのでここだけに着目すると、POSTで受け取るように作ればGETでは受け取れませんし、その逆も成り立ちます。

http://www.tohoho-web.com/wwwcgi3.htm

ところが実際には、CGIがサーバーからパラメーターを受けとるというのは、どんなCGIでも共通の処理ですし、またPOSTとGETの処理にも共通の部分があります。そこで通常はPOSTでもGETでもどちらでも処理できるプログラムをあらかじめ用意しておき、それをモジュールとかライブラリとかいう手法で使い回します。

では「通常はどちらでもOKだ」と言ってしまってよいかというと、これがまた断言しかねます。実際にCGIとFORMを作成していらっしゃるということですのでご理解いただけると思いますが、POSTよりGETのほうが、FORMで想定していない偽のパラメーターを送信することがたやすくできます。もちろんPOSTでも偽装は可能ですが、POSTの場合はそれなりのツールを用意する必要があるのに対し、GETであればブラウザのアドレス蘭にタイプするだけです。また「どのようなパラメーターが送信されているか」も、POSTよりGETのほうが貼るかに分かりやすくなります。

http://www.atmarkit.co.jp/fsecurity/rensai/httpbasic02/httpbasic...

そのため、セキュリティを気にする局面では、「ちょっとその気になった悪戯」レベルの攻撃をふるい落とすために、CGI側でGETを無効にすることがあります。もちろんPOSTでもパラメーターの偽装は可能ですから、金銭なり会社の名誉なりが関わるような場合は、CGI内部で渡されたパラメーターの正当性をチェックしなければなりませんし、そうしたチェックを行っていれば、GETを無効にする必要性はありませんが。

◎質問者からの返答

詳しく解説して頂いてありがとうございます。

自分が作ったもので怖い部分がやはりセキュリティ(といっても大事なデータなどはないのですが)面です。

なにか、どこかの誰かが遊び半分で変なデータを投げられたときに、壊れたりしないかどうか?

というのが一番の不安でした。チェックは考えつく限りたくさんやってますが。

参考になりました。ありがとうございます!


3 ● nikuzure
●26ポイント

http://www.futomi.com/lecture/form/index.html

上記のサイトに解説がありますが「POST」と「GET」は別のものです。

ですので、意図的に分ける作りにしてある場合は、POST の値と同じキーを

GET で渡しても、何もデータを送らない事と同じになります。

逆に、意図的に同じ値として受け取るようにしてあった場合は、

処理が実行されます。

◎質問者からの返答

ありがとうございます。

つまり現在は自分はPOSTで受け取るようにしているので、GETで無理矢理送られても動作しない、という事で理解しました。

おそらく両方うけとれるようにするには、こうするのかな、、、という検討もつきました。

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ