バックグラウンド
WebForms ページ (cms でホストされている) から AntiForgeryToken を使用する必要があります。ページは、ソリューションの一部である MVC 2.0 アクションにデータを投稿する必要があります。アクションは ValidateAntiForgeryToken 属性を使用する必要があります。
ここから解決策を試しました: Using an MVC HtmlHelper from a WebFormが、レンダリングされた偽造防止トークンがコントローラー アクションから無効として通知されたため、機能していないようです。
現在のソリューション
これで、偽造防止トークンを含む入力タグのみを含む部分ビューをレンダリングするアクションを利用できるように解決しました。
意見
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%= Html.AntiForgeryToken() %>
このページでは、JavaScript を使用して、偽造防止トークンを次のようなフォームに取り込みます。
形
<form id="jsonForm" action="/my/action" method="post">
<input id="tokenPlaceholder" type="hidden" />
偽造防止トークンを取得する
<script type="text/javascript">
$(function () {
$.ajax({
url: "/antiforgery/token",
type: "GET",
success: function (data, textStatus, jqXHR) {
$("#tokenPlaceholder").replaceWith(data);
}
});
});
</script>
これは、フォームの投稿が ValidateAntiforgeryToken 属性に従って有効である限り機能します。
質問
この方法で偽造防止トークンをフォームに追加すると、セキュリティ上の問題はありますか?
乾燥させない簡単な方法はありますか?