Javascriptインジェクション攻撃
Javascriptインジェクション攻撃?
javascriptインジェクション攻撃とは何ですか?実は、他の攻撃と比べると、javascriptは比較的単純なものかもしれません。
ウェブサイトがユーザーの入力を受け付け、その内容を再表示するたびに、この攻撃を受ける可能性があります。
asp.net mvcを使用した簡単な例です。
[ValidateInput(false)
public class HomeController : Controller
{
public string Index(string genre)
{
//return the genre parameter unchanged
string result = genre;
return result;
}
public ActionResult About()
{
return View();
}
}
これはコントローラのコードで、URL リクエストが対応するアクションへのルートによって解析されるところです。
このインデックスメソッドでは、呼び出しビューレベルのコードは存在せず、ジャンルパラメータはページ上に直接文字列として表示されます。
http://localhost:1796/home/index?genre=abc のような通常のURLの場合、ページにはabcが表示されます。
しかし、javascriptによる攻撃では、例えばurlがhttp://localhost:1796/home/index?genre= の場合 <script>window.location='http://baidu.com/'</script>
ここでは、他に2つのケースがあります。
1、Chromeの場合。
表面上の現象は、何も返ってこないのに、デバッガを開くとページエラーが表示される
JavaScript スクリプトの実行を拒否されました。スクリプトのソースコードがリクエスト内に見つかりました。
<スパン
2.IEでどうなるかを見るため。
<スパン 本当に上手なんだなぁと思います。
他のブラウザでは実験していません。
<スパン 個人的には、クロームブラウザの動作は、このようなものだと判断しています。
<スパン 1. サーバーサイドから返される結果は <script>window.location='http://baidu.com/'</script>
<スパン 2. ブラウザが、 "I cao, this is a piece of js code, do I execute it or not?
<スパン 3. 焦らず、まずはリクエストの内容を見る http://localhost:1796/home/index?genre= <スパン <script>window.location='http://baidu.com/'</script>
4.クロームブラウザ: "ニマ、これは典型的なjavascript攻撃です、なぜならマッチング要求と返されたjsコードは同じです"。
<スパン 5. くっそー、出演拒否だー。
この方法でクロームの実装を少しオナニーして、クロームはまだ賢いと思う。
<スパン 追記:実はasp.net mvcフレームワークの方がまだ優れているんです。
<スパン 注意深く見ていると、コントローラのコードの中に [ValidateInput(false)] という余分な行があることに気づくかもしれません。
目的は、mvc のチェックサムのクエリ文字列の部分をブロックすることです。urlの中に <script> のようなものが含まれている場合、httpリクエストはurlRouteレイヤーに到達しません。
その代わり System.Web.HttpRequestが最初にインターセプトして、例外をスローします。
クライアントから危険な可能性のあるRequest.QueryStringの値が検出されました(genre="<script>
関連
-
c# - デシリアライズ・エラー。入力文字列が正しい形式でない
-
C#の遅延関数の使用
-
Unityがエラーを報告します。コレクションが変更されました。列挙操作が実行されない可能性があります。
-
このリソースにアクセスするには完全な認証が必要です Unauthorized
-
インデックスが配列の範囲外であった。
-
C#のビルドコードで、すべてのコードパスが値を返さないエラーが発生する
-
System.InvalidOperationException: ConnectionString プロパティが初期化されていません。
-
C# データベース操作エラー。この接続に関連付けられた開いているDataReaderがすでにあり、これを閉じる必要があります...
-
C#の構文]をご覧ください。C#のリフレクション(アセンブリ)機構を説明する
-
GDI+でジェネリックエラーが発生しました@System.Drawing.Image.RotateFlip
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
C# string.format でのエラー: 入力文字列が正しい形式でない
-
C# indexof() の使用法
-
C#高精度遅延コード実行時間(us/ns)
-
C#の面接質問100選(.net開発者必見)
-
C#とC++の型対応表まとめ
-
VS エラー LNK2005:**already defined in **.obj
-
HTTP エラー 500.22 - 内部サーバー エラー-IIS7 Asp.net2.0 ウェブサイトの実行ソリューションに失敗しました。
-
vs2010 can't debug, can't enter breakpoint, breakpoint is invalid.
-
エラーです。名前 'Encoding' は現在のコンテキストに存在しない ソリューション
-
ASP.NET URL変更によるページ受け渡し