- ベストアンサー
URI Too Long エラーログについて
送信フォームをPHPにて作成しましたが、エラーログに「request failed: URI too long」が時々表示され困っております。 このエラーログ発生の回避方法がございましたらご教授お願いします。 レンタルサーバー情報 OS:FreeBSD 4.8-RELEASE-p13 httpd:Apache/1.3.27 Ben-SSL/1.48 (Unix) PHP:4.3.6 / 4.2.4-dev / 3.0.18-i18n-ja-3
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
このエラーはいろいろな原因があります。 (1) access_log にとんでもない長さのアクセスログがある場合。 ***.***.***.*** - - [11/Apr/2004:10:49:22 +0900] SEARCH /\x90\x02 \xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02 \xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02 \xb1\x02\xb1\x02\xb1\x02\・・・・・ これは、トレンドマイクロ社ではWORM_AGOBOT.PY、 シマンテック社では、W32.HLLW.Gaobot.gen と言われている、 Microsoft IISのWebDAVの脆弱性を突きに来るワームによるアクセスが原因です。 (2) GETメソッドの制限 GETメソッドではデータの長さが制限されています。 どれだけの長さまで許されるかは OS や WWW ブラウザなどの環境に依存します。 apache1系では URL部分も含めて 8190 バイトを越えると 414 Request-URI Too Large となるはずです。 日本語1文字2バイト、URLエンコードして6バイトなので、 1300文字程度しか書けません。 一行80文字でたった17行です。 また、UNIX では環境変数に代入できるデータの長さも制限があります。 GETを使っているのであれば、POSTメソッドを使ってみてはいかがでしょう?
補足
ご対応ありがとうございます。 (1)ワームアクセスの場合は、受信できない現状維持が宜しいのでしょうか? (ワームアクセスがどの様な結果になるのか知らないので、変な質問ですみません) (2)下記のロジックで「get」は使用してないのです。 送信フォーム <form method="post" ENCTYPE="multipart/form-data" action="cgi-bin/send.cgi" id=form1 name=form1> php $name =$_POST['name'];