CSRFをシミュレートするために、悪意のあるコードにCookieまたはセッション情報を含めません。 CSRFの全体のポイントは、実行するコードがセッションまたはクッキー情報を知らないということです。ブラウザはアプリケーションへの要求にそれを含めることを前提としています。
テストするには、POSTメソッドとtxtFrom、txtTo、およびtxtAmountのパラメータをボタンbtnSubmitで受け取り、アカウント1からアカウント2に転送しようとするページTransfer.aspxがあるとします。あなたの悪意のあるコードのようなものが考えられます。
<form action="http://www.mysite.com/Transfer.aspx" method="post">
<input type="hidden" name="txtFrom" value="1" />
<input type="hidden" name="txtTo" value="2" />
<input type="hidden" name="txtAmount" value="500" />
<input type="hidden" name="__VIEWSTATE" value="[PUT VIEWSTATE VALUE HERE]" />
<input type="hidden" name="__EVENTVALIDATION" value="[PUT EVENTVALIDATION VALUE HERE]" />
<input type="submit" name="btnSubmit" value="Go" />
</form>
あなたは、ビューステートとeventvalidation値がどうなるかを事前に知る必要があるだろうので、あなたのページから、あなたが適切にログインしているときにコピーする必要があるだろう。これは、ユーザーまたはセッションに関係なく、ビューステートが一定であることを前提としています。
あなたは悪意のあるページを持っています。 1つのタブにログインしている場合は、別のタブでこれを開き、送信してください。脆弱性がある場合は、転送が行われます。その理由は、mysite.comに所属するクッキーが送信されます。つまり、別のタブで生きているセッションが使用されるためです。
これを修正するには、あなたの投稿に一意のセッションごとの値を含める必要があります。これは、ViewStateUserKeyを使用してASP.NETセッションIDまたはそのハッシュに設定することで、最も簡単に実行できます。これにより、__VIEWSTATEの値がすべてのセッションで一意になります。つまり、__VIEWSTATEの値が何であるかを誰も予測できないため、脆弱ではなくなります。
これはCSRFに関する一般的な記事です。OWSASP http://www.troyhunt.com/2010/11/owasp-top-10-for-net-developers-part-5.html – Nickz