1

バックグラウンド

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 属性に従って有効である限り機能します。

質問

この方法で偽造防止トークンをフォームに追加すると、セキュリティ上の問題はありますか?

乾燥させない簡単な方法はありますか?

4

1 に答える 1