2010-12-28 6 views
1

Webアプリケーションの例外ログに、ユーザが何らかの形で<input type="text" ...>がフィールドのmaxlength属性で指定されている文字より多く入力されたWebフォームを提出したことが示されているようです。これの唯一の結果は、ログに対するSQL例外を生成し、ユーザに一般的なエラーページを提示することであった(すなわち、ユーザはSQLエラーを認識しなかった)ので、損害は発生しなかった。しかし、私はこれがどのように起こったのか不思議です。HTMLテキストフィールドでmaxlengthをバイパスする正当な方法はありますか?

私は、(カスタム・クライアントを介して提出するなどFirebugは、とHTMLをいじる)、これを回避する方法が「ハッキング」されているが、これは(特定のブラウザを使用して、おそらく)起こることができる任意の正当なの方法があります知っています私はコード変更を通じて対応することができますか?

ハッキングによって生成された場合、変更は必要ありません.SQLエラーはシステムを害から保護します。しかし、ユーザーが合法的にこれを何とかヒットした場合は、修正したいと思います。

問題の場合...そのリクエストのユーザーエージェントはSafari/Mac (Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-us) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4でした)Windows Safariで問題を再現できず、Macにアクセスできない。

答えて

4

可能性が含まれます:

  • を一部のWebブラウザは、(私は私の頭の上からいずれかを知らない)maxlength
  • Greasemonkey様スクリプト
  • 誰かが別のページを建て尊重しません

は覚えているフォーム、要求の一部として送信され、ブラウザの文字列としての場所に提出する、あるいはアプリケーションがそう簡単にそれもWORないことを偽造され基本的な分析以外の目的でそれを信頼しています。

一般的に、すべてのデータを検証する必要があり、不正なデータがシステム内部(データベースなど)に作成されないようにする必要があります。 HTML入力フィールドmaxlength属性および他のクライアント側の検証は、ユーザーの便宜のためにそこにありますが、あなたのサイトを保護するものではありません。さらに、独自の検証を実行すると、より良いエラーメッセージをユーザーに返すことができます。そして道を辿ると、何か問題が起こったときに自分のアプリケーションをデバッグするのにも役立ちます。

私の意見では、データベースエラーの原因となるユーザー提出データは重大な欠陥であり、おそらくシステムのセキュリティホールを示しています。

+0

ユーザーにはデータベースエラーは表示されません...一般的なエラーページのみが表示されます。データベースエラーはログにのみ書き込まれます。 – JoelFan

+0

アダムが正しいです。セキュリティルールの1つは「決して信用できません」です。フィールドのサイズが限られていて、PHPのサイズが制限されていることを確認したら、このエラーがデータベースによって防止されるため、問題ではないと判断してはいけませんすべてのフィールドで、誰かがいつかこのフィールドを別のタイプの攻撃に使用すると、サイズを制限することで、自分の仕事を本当に難しくします。そして、ある日データベースのサイズエラー処理でバグが発見されても、影響を受けることはありません。 – regilero

0

本当の解決策は、クライアント側ではなくサーバー側の検証を行うことです。確かに、maxlengthを設定することに害はないが、決してそれがあなたの最後の防衛ラインであるべきではない。

+0

"防御"が必要な理由はわかりません。彼らがあまりにも大きな価値を提出することによって損害は起こらない。ユーザーにはデータベースエラーは表示されません...一般的なエラーページしか表示されません。データベースエラーはログにのみ書き込まれます。 – JoelFan

+1

一般的なエラーページは、ユーザーエクスペリエンスに有害です。代わりに、あなたのサーバー側の検証では、 "フィールドxはy文字よりも長くなることはありません"というエラーメッセージでフォームを再表示する必要があります。 – ceejayoz

+0

これはちょっとしたことです。正当な*方法があれば、このページが表示されます、maxlengthが設定されていても、私はそれに対処します...そうでなければ、それはそれです...私はハッカーのためのユーザーエクスペリエンスに取り組む必要はありません! – JoelFan

関連する問題