1

VB.NET Web アプリケーションで JavaScript インジェクションを防ぐ最善の方法は何ですか? pageload イベントで JavaScript を無効にする方法はありますか?

最近、vb.net 製品のセキュリティ計画の一部として、特定のユーザーが使用できないページ上のボタンを単純に無効にすることがありました。しかし、私はタイピングのアイデアを考えた人に知らせました

javascript:alert(document.getElementById("Button1").disabled="")

アドレスバーでボタンを再度有効にします。他の誰かが以前にこのような問題に遭遇したことがあると確信しているので、助けていただければ幸いです。ありがとう!

更新: ユーザー入力の検証以外に、アドレス バーから Web サイトをいじられないようにするにはどうすればよいですか?

4

5 に答える 5

12

アプリケーションのクライアント側の動作に加えた変更は表面的なものであり、まったく安全ではありません。これらに頼るべきではありません。ユーザーの 99% を阻止するのは良いことですが、回避するのは簡単です。アクションが呼び出されたときに、ユーザーがサーバー側でアクションに対する適切な権限を持っているかどうかを確認する必要があります。そのため、誰かがボタンを自分で再度有効にすることを決定した場合、ボタンの目的は何でも実行できなくなります。行う。他のユーザーが JavaScript を使用してページに対して実行できることを制御することはできないため、クライアントからの情報は決して信頼しないでください。

更新への対応:実用的な方法ではできません。これがまさに問題です。ウェブサイトがブラウザに表示されると、誰でも自由にアクセスできるようになります。これが、プログラムがサーバー側のすべてを毎回検証する必要がある理由です。

于 2009-03-16T19:32:34.997 に答える
7

考慮すべき最も重要な項目は、ユーザー入力の html エンコードです。ユーザーが <script> を入力すると、 <script> に変換されます。等

更新: URL / クエリ文字列からの入力が必要な場合は、極端な方法でデータを検証してください。可能であれば、受信したデータをホワイト リストに登録します。ホワイトリストに登録すると、正しく安全であると判断したもののみが実行可能な提出物であることを保証できます。

ユーザーの入力を信用しないでください。

于 2009-03-16T19:31:05.157 に答える
2

常にユーザー入力を検証します。

于 2009-03-16T19:31:14.547 に答える
2

クライアントからのデータを決して信頼しないでください。あなたが管理しているサーバー側でデータと権限を常に検証してください。ユーザー (または他のアプリケーション) は、必要なデータを送信できることを忘れないでください。

于 2009-03-16T19:33:48.190 に答える
1

javascript を介してインターフェイスをロックダウンするために何をするかは問題ではありません。データは常に何らかの方法で操作できます。ポストバック/リクエストを変更または再作成するために使用できるフィドラーなど、さまざまなツールがあります。

物事をロックダウンする方法を見つけたとしても、データが攻撃者にとって十分に重要である場合、軍拡競争に巻き込まれます。最も実行可能なオプションは、入力サーバー側を検証することです。

于 2009-03-16T19:36:52.177 に答える