背景
我需要使用 WebForms 页面(托管在 cms 中)中的 AntiForgeryToken。该页面应将数据发布到作为解决方案一部分的 MVC 2.0 操作。该操作应使用 ValidateAntiForgeryToken 属性。
我确实从这里尝试了解决方案:Using an MVC HtmlHelper from a WebForm但它似乎不起作用,因为渲染的 antiforgerytoken 在控制器操作中被指示为无效。
当前解决方案
现在我已经解决了这个问题,这样我就有了一个可用的操作来渲染一个部分视图,该视图只包含一个带有防伪标记的输入标签。
看法
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%= Html.AntiForgeryToken() %>
该页面使用 javascript 将 antiforgerytoken 拉入如下形式:
形式
<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 属性有效,这将起作用。
问题
以这种方式将防伪令牌添加到表单中是否存在任何安全问题?
有没有更简单的方法我不干?