JavaScriptは、ハッカーがWebサイトを攻撃するためのツールとして使用できます。 JS(JavaScript)による悪意のあるスクリプトを注入することは、方法の1つです。それでは、JS注射攻撃を防ぐ方法を学びましょうか?以下は良い声明です、あなたと共有してください:
JavaScriptインジェクション攻撃とは何ですか?
ユーザーからのコンテンツ入力を受け入れ、それを再表示するたびに、WebサイトはJavaScriptインジェクション攻撃に対して脆弱です。 JavaScript注入攻撃に対して脆弱な特定のアプリケーションを見てみましょう。顧客フィードバックWebサイトが作成されたとします。顧客はウェブサイトにアクセスして、製品に関するフィードバック情報を入力できます。顧客がフィードバックを送信すると、フィードバック情報がフィードバックページに再表示されます。
カスタマーフィードバックWebサイトは簡単なWebサイトです。残念ながら、このウェブサイトはJavaScriptインジェクション攻撃に対して脆弱です。
次のテキストが顧客フィードバックフォームに入力されているとします。
<script> alert( "boo!")</script>
このテキストは、警告メッセージボックスを表示するJavaScriptスクリプトを表します。誰かがこのスクリプトを顧客フィードバックフォームに提出した後、メッセージブー!将来、誰もが顧客フィードバックWebサイトにアクセスしたときに攻撃を示します。また、他の人はJavaScript注入攻撃によってそれを破壊することはできないと考えるかもしれません。
さて、JavaScript注入攻撃に対する最初の反応は、それらを無視することかもしれません。 JavaScriptインジェクション攻撃は無害に過ぎないと思うかもしれません。残念ながら、ハッカーはJavaScriptをWebサイトに注入することで妨害行為を行います。 JavaScriptインジェクション攻撃を使用して、クロスサイトスクリプティング(XSS)攻撃を実行できます。クロスサイトのスクリプト攻撃では、機密のユーザー情報を盗まれて別のWebサイトに送信できます。
たとえば、ハッカーはJavaScriptインジェクション攻撃を使用して、他のユーザーのブラウザからCookie値を盗むことができます。機密情報(パスワード、クレジットカードアカウント、または社会保障番号など)がブラウザCookieに保存されている場合、ハッカーはJavaScriptインジェクション攻撃を使用して盗むことができます。または、ユーザーがページのフォームフィールドに機密情報を入力し、ページがJavaScript攻撃によって侵害された場合、ハッカーは注入されたJavaScriptを使用してフォームデータを取得して別のWebサイトに送信できます。
大いに注意してください。 JavaScript注射攻撃を真剣に受け止め、ユーザーの機密情報を保護します。次の2つのセクションでは、ASP.NET MVCアプリケーションがJavaScript注入によって攻撃されるのを防ぐための2つの手法について説明します。
方法1:ビューでのHTMLエンコード
JavaScript注入攻撃を防ぐ簡単な方法は、ビュー内のデータを再表示するときにHTMLのWebサイトユーザーが入力したデータをエンコードすることです。
例:<%= html.encode(feedback.message)%>
文字列をエンコードするためにHTMLを使用することの意味は何ですか? HTMLを使用して文字列をエンコードする場合、<and>などの危険な文字が<and>などのHTMLエンティティに置き換えられます。したがって、string <script> alert( "boo!")</script>がhtmlを使用してエンコードされると、<script> alert( "boo!")</script>に変換されます。ブラウザは、エンコードされた文字列を解析するときにJavaScriptスクリプトを実行しなくなりました。代わりに、無害なページが表示されます
方法2:データベースに書き込む前にHTMLエンコード
HTMLを使用してデータをエンコードすることに加えて、ビューにデータを表示するときにデータを表示するときに、データベースに送信する前にHTMLを使用してデータをエンコードすることもできます。 2番目の方法は、プログラムのリスト4のコントローラーの場合、まさにその場合です。
のように:
public ActionResult create(string message){// Feedbackvar newFeedback = new Feedback(); newFeedback.message = server.htmlencode(message); newFeedback.entrydate = dateTime.now; db.feedbacks.insertonsubmit(newFeedback); db.submitchanges(); // redirectreturn redirecttoaction( "index");}メッセージの値は、データベースに送信する前にcreate()操作でエンコードされているHTMLであることに注意してください。ビューでメッセージが再表示されると、メッセージがHTMLエンコードされているため、メッセージに注入されたJavaScriptは実行されません。
要約します
多くの場合、人々は2番目の方法ではなく、このチュートリアルで説明されている最初の方法を使用することを好みます。 2番目のアプローチの問題は、HTMLエンコードデータが最終的にデータベースに保持されることです。言い換えれば、データベース内のデータには奇妙な文字が含まれます。これの欠点は何ですか? Webページ以外の形式でデータベースデータを表示する必要がある場合、問題が発生します。たとえば、Windowsフォームアプリケーションでデータを簡単に表示することはできません。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。