- ベストアンサー
CONTENT_LENGTH について
環境変数は いつわることが できると どこかで読んだんですが ENV{ CONTENT_LENGTH } もし信用できないんでしょうか? 教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
あなたの立場が CGIを作成または設置する人で、CGIが認識する環境変数が信頼できるかという質問ですね? Webサーバーの管理者があなたとは別人で、悪意と技術力を合せ持つ人なら、環境変数の内容は偽りかも知れません。 そうでは無い場合でも、Webサーバーの癖とかバグ(?)とかで、例えば IIS の CONTENT_LENGTH は信用できないぞ問題はある様です。 ただ、Perlで CGI を書く場合、CONTENT_LENGTH環境変数が必要な局面を私は思い付きません。
その他の回答 (3)
- taseki
- ベストアンサー率66% (155/233)
ブラウザやOSなど閲覧環境がセットされるUSER_AGENTとか参照元がセットされるREFERERと同じで、閲覧側の「自己申告」である以上、ただの参考値だと思ったほうが良いです。 セキュリティ目的で、巨大なデータを受け付けないようにするのであれば、そんな面倒なことをしなくても、単に読み込む処理でMAXを超えたらエラーにすれば良いし、そもそも書かなくても、そういう機能を持ったモジュールは多いですよ。
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
ブラウザが送信するデータですから、利用者が改造などをすれば偽ることもできます。 また、偽りでなくても、 enctypeにmultipart/form-dataなどを指定して送信した場合、 content_lengthが実際に送信するデータ長よりも多くなることがあります。
お礼
回答ありがとうございます 偽りでなくても 実際データより多くなることが あるんですね。 CONTENT_LENGTHは 信用できないようですね どうもありがとうございました!
$ENV{'CONTENT_LENGTH'}はPOSTリクエスト時にクライアントが送ってきたContent-Lengthに他なりません 管理者の悪意など無関係に偽装は可能です
お礼
回答ありがとうございます。 偽装が可能なんですね。 セキュリティーで 使えないかと考えていたんですが CGIのセキュリティーは むずかしそうですね。。 回答ありがとうございました!
お礼
回答ありがとうございます。 >Webサーバーの癖とかバグ(?)とかで、例えば IIS の CONTENT_LENGTH は信用できないぞ問題はある様です。 こういうこともあるんですね ある一定以上データがきたら はじく処理とか考えたんですが 意味ないですかね? サーバの癖とかあるとなかなか難しそうですね どうもありがとうございました!