• ベストアンサー

CONTENT_LENGTH について

環境変数は いつわることが できると どこかで読んだんですが ENV{ CONTENT_LENGTH } もし信用できないんでしょうか? 教えてください。

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

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

あなたの立場が CGIを作成または設置する人で、CGIが認識する環境変数が信頼できるかという質問ですね? Webサーバーの管理者があなたとは別人で、悪意と技術力を合せ持つ人なら、環境変数の内容は偽りかも知れません。 そうでは無い場合でも、Webサーバーの癖とかバグ(?)とかで、例えば IIS の CONTENT_LENGTH は信用できないぞ問題はある様です。 ただ、Perlで CGI を書く場合、CONTENT_LENGTH環境変数が必要な局面を私は思い付きません。

hotjoy100
質問者

お礼

回答ありがとうございます。 >Webサーバーの癖とかバグ(?)とかで、例えば IIS の CONTENT_LENGTH は信用できないぞ問題はある様です。 こういうこともあるんですね ある一定以上データがきたら はじく処理とか考えたんですが 意味ないですかね? サーバの癖とかあるとなかなか難しそうですね どうもありがとうございました!

その他の回答 (3)

  • taseki
  • ベストアンサー率66% (155/233)
回答No.4

ブラウザやOSなど閲覧環境がセットされるUSER_AGENTとか参照元がセットされるREFERERと同じで、閲覧側の「自己申告」である以上、ただの参考値だと思ったほうが良いです。 セキュリティ目的で、巨大なデータを受け付けないようにするのであれば、そんな面倒なことをしなくても、単に読み込む処理でMAXを超えたらエラーにすれば良いし、そもそも書かなくても、そういう機能を持ったモジュールは多いですよ。

回答No.3

ブラウザが送信するデータですから、利用者が改造などをすれば偽ることもできます。 また、偽りでなくても、 enctypeにmultipart/form-dataなどを指定して送信した場合、 content_lengthが実際に送信するデータ長よりも多くなることがあります。

hotjoy100
質問者

お礼

回答ありがとうございます 偽りでなくても 実際データより多くなることが あるんですね。 CONTENT_LENGTHは 信用できないようですね どうもありがとうございました!

noname#208124
noname#208124
回答No.2

$ENV{'CONTENT_LENGTH'}はPOSTリクエスト時にクライアントが送ってきたContent-Lengthに他なりません 管理者の悪意など無関係に偽装は可能です

hotjoy100
質問者

お礼

回答ありがとうございます。 偽装が可能なんですね。 セキュリティーで 使えないかと考えていたんですが CGIのセキュリティーは むずかしそうですね。。 回答ありがとうございました!

関連するQ&A