ホームページ  >  記事  >  ウェブフロントエンド  >  aspnet mvc は @Html.AntiForgeryToken() を使用してクロスサイト攻撃を防止します_html/css_WEB-ITnose

aspnet mvc は @Html.AntiForgeryToken() を使用してクロスサイト攻撃を防止します_html/css_WEB-ITnose

WBOY
WBOYオリジナル
2016-06-21 08:52:381680ブラウズ

asp.net mvc の Html.AntiForgeryToken() は、クロスサイト リクエスト フォージェリ攻撃を防ぐことができます (XSS は、CSS とも呼ばれます: クロスサイト スクリプト)。XSS は通常、内部の信頼を使用します。ユーザーは悪意のあるスクリプト コードを Web サイトに挿入して攻撃しますが、CSRF は信頼できるユーザーになりすまして Web サイトを攻撃します。

簡単な例を挙げると、例えば、システム全体のお知らせは Web サイトのトップページに表示され、このお知らせはバックグラウンドから送信されます。
という最も単純な書き方をします。
Webサイトの背景(ホーム/インデックスページ) ホームページのお知らせ内容を設定し、HomeControllerのText Actionに送信

@using  (Html.BeginForm("Text","Home",FormMethod.Post))  {      @:输入信息:<input type="text" name="Notice" id="Notice" />      <input type="submit" value="Submit" />  }  HomeController的Text Action[HttpPost]  public ActionResult Text()  {       ViewBag.Notice = Request.Form["Notice"].ToString();       return View();  }



お知らせを完了し、送信して表示


現時点では、クロスサイト攻撃の脆弱性を悪用するために、CSRF は一般にいくつかの条件に依存します

(1) 攻撃者は被害者がいるサイトを知っています

(2) 攻撃者のターゲット サイトが永続的な認証 Cookie を持っている、または被害者が現在のセッション Cookie を持っている

(3) 現時点では、ターゲット サイトは Web サイト上でのユーザーの行動に対する 2 番目の認証を持っていない

次に、リクエスト アドレスが http://localhost:25873/Home/Text であり、条件 2 と 3 も満たしていると仮定して、クロスサイト リクエストのシミュレーションを開始しましょう。

そこで、次の内容を含む新しい AntiForgeryText.html ファイルを作成しました。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml" >  <head>      <title></title>  </head>  <body>      <form name="badform" method="post" action="http://localhost:6060/Home/Text">          <input type="hidden" name="Notice" id="Notice" value="你的网站被我黑了。。" />          <input type="submit" value="黑掉这个网站" />      </form>  </body>  </html>


この HTML では、隠しフィールド、名前、ID、およびパラメーター名を追加しました。ウェブサイトでも同様に受信できます。

「この Web サイトをハックする」をクリックすると次のように表示されます


これは、ホームページ上のお知らせを変更するために脆弱性を利用しています。これは単純なクロスサイトの例です。攻撃。 。



MVC では、ページで Html.AntiForgeryToken() を使用し、対応するアクションに [ValidateAntiForgeryToken] 機能を追加することで、クロスサイト攻撃を防止します。

上記のコードを

@using  (Html.BeginForm("Text","Home",FormMethod.Post))  {      @Html.AntiForgeryToken()      @:网站公告:<input type="text" name="Notice" id="Notice" />  <input type="submit" value="Submit" />  }  [HttpPost]  [ValidateAntiForgeryToken]  public ActionResult Text()  {      ViewBag.Notice = Request.Form["Notice"].ToString();      return View();  }


に変更します。このようにして、AntiForgeryText.html の "Hack this website" をクリックし、再度リクエストを行います


これにより、クロスサイト攻撃を防ぐことができます

参考: asp.net mvc の @Html.AntiForgeryToken() により、クロスサイト攻撃が防止されます http://www.ourcodelife.com/thread -49179- 1-1.html

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。