English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JavaScript注入攻撃とは?

Javascriptは、ウェブサイトをハッキングするためのツールの一つであり、js(JavaScript)の悪意のあるスクリプトがその手段の一つです。それでは、次にjsのインジェクション攻撃を防ぐ方法について学びましょう。63;以下は非常に良い記述であり、共有しましょう:

JavaScriptインジェクション攻撃とは何ですか?
ユーザーからの入力内容を受け入れ、その内容を再表示するたびに、ウェブサイトはJavaScriptインジェクション攻撃に容易にさらされます。JavaScriptインジェクション攻撃にさらされやすい具体的なアプリケーションを研究しましょう。例えば、クライアントフィードバックウェブサイトが作成されていると仮定します。クライアントはウェブサイトにアクセスし、製品に関するフィードバック情報を入力できます。クライアントがフィードバックを提出すると、フィードバック情報がフィードバックページに再表示されます。

クライアントフィードバックウェブサイトはシンプルなウェブサイトです。残念ながら、このウェブサイトはJavaScriptインジェクション攻撃に容易にさらされます。

以下のテキストをクライアントフィードバックフォームに入力する場合を想定しましょう:

<script>alert(“Boo!”)</script>

このテキストは、警告メッセージボックスを表示するJavaScriptスクリプトを示しています。誰かがこのスクリプトをクライアントフィードバックフォームに提出すると、メッセージ「Boo!」が将来誰かがクライアントフィードバックウェブサイトにアクセスしたときに表示される攻撃として表示されます。他人がJavaScriptインジェクション攻撃を通じて壊壊するとは思わないかもしれません。

今、JavaScript インジェクション攻撃に対する最初の反応は無視するかもしれません。JavaScript インジェクション攻撃が無害だと思っているかもしれませんが、残念ながら、ハッカーはウェブサイトに JavaScript を注入して破壊活動を行います。JavaScript インジェクション攻撃を使用して、クロスサイトスクリプト(XSS)攻撃を実行することができます。クロスサイトスクリプト攻撃では、秘密のユーザー情報を盗み、別のウェブサイトに送信することができます。

例えば、ハッカーは JavaScript インジェクション攻撃を使用して、他のユーザーのブラウザから Cookie 値を盗むことができます。ブラウザの Cookie にセキュリティ情報(パスワード、クレジットカード番号、社会保障番号など)を保存している場合、ハッカーは JavaScript インジェクション攻撃を使用してこれらの情報を盗むことができます。または、ユーザーがフォームフィールドにセキュリティ情報を入力し、ページが JavaScript 攻撃を受けている場合、ハッカーは注入された JavaScript を使用してフォームデータを取得し、別のウェブサイトに送信することができます。

非常に重要です。JavaScript インジェクション攻撃に真剣に対処し、ユーザーの秘密情報を保護してください。次の二つのセクションでは、ASP.NET MVC アプリケーションが JavaScript インジェクション攻撃に耐えるための二つの技術について説明します。 

方法 1:ビュー内の HTML エンコード 

JavaScript インジェクション攻撃を防ぐ簡単な方法は、データを視图中表示する際に、ウェブサイトのユーザーが入力したデータをエンコードすることです。

例:<%=Html.Encode(feedback.Message)%>

HTML エンコードする文字列の意味は何ですか?HTML エンコードする際には、危険な文字如 < と > が HTML 実体、例えば < と > に置き換われます。したがって、HTML エンコードされた文字列 <script>alert(“Boo!”)<を使用する場合、/script>の場合、それが <script>alert(“Boo!”)< に変換されます。/script>。ブラウザがエンコードされた文字列を解析する際には、JavaScript スクリプトを実行するのではなく、無害なページを表示します。

方法 2:データベースへの書き込み前の HTML エンコード
除了在视图中显示数据时使用 HTML エンコードデータ以外、データをデータベースに提出する前にエンコードデータを使用できます。この第二种方法は、プログラムリスト 4 中 controller 的情况。

如:

public ActionResult Create(string message)
{
// フィードバックを追加
var newFeedback = new Feedback();
newFeedback.Message = Server.HtmlEncode(message);
newFeedback.EntryDate = DateTime.Now;
db.Feedbacks.InsertOnSubmit(newFeedback);
db.SubmitChanges(); 
// Redirect
return RedirectToAction(“Index”);
}

注意してください。メッセージの値は、データベースに投稿される前に Create() 操作で HTML エンコードされます。メッセージがビューで再表示される際、メッセージは HTML エンコードされ、メッセージに注入された JavaScript は実行されません。

まとめ

一般的に、人々はこのチュートリアルで話している最初の方法を好み、二番目の方法を好まないことが多いです。二番目の方法の問題は、データベースでは最終的に HTML エンコードされたデータが保持されることです。つまり、データベースのデータには奇妙な文字が含まれます。これはどのような悪影響がありますか?データベースのデータをウェブページ以外の形式で表示する必要がある場合、問題が発生します。例えば、Windows Forms アプリケーションでデータを簡単に表示することができません。

これで本記事はすべて終わりです。皆様の学習に役立てば幸いですし、もっと「叫び教程」を応援していただけると嬉しいです。

声明:本記事の内容はインターネットから提供されています。著作権者はすべての権利を保有しており、インターネットユーザーが自発的に提供し、自己でアップロードしています。本サイトは権利を所有しておらず、編集は行われていません。著作権侵害を疑う内容がある場合は、メールを送信してください:notice#oldtoolbag.com(メールを送信する際、#を@に置き換えてください。告発を行い、関連する証拠を提供してください。一旦確認がついたら、本サイトは即座に侵害を疑われるコンテンツを削除します。

おすすめ