安全性:ASP.NET Core 8 MVC 中的表单与 AJAX 请求

问题描述 投票:0回答:1

我正在查看 ASP.NET Core 8 MVC 项目的订阅页面。

在安全性方面,这两种方法相互兼容吗?

我确实更喜欢 AJAX,因为它允许我使用 JS 烤面包机进行用户体验/反馈(无效电子邮件等)。

选项 1:在视图中,使用顶部的

@model
和引用该
form
model
元素。

<form asp-controller="Account" asp-action="AddNewUser" method="post" id="form-login">
    //Several div with the required properties
    <div class="form-group">
        @Html.EditorFor(model => model.email, new { htmlAttributes = new { @class = "form-control" } })
    </div>
</form>

选项2:在视图中创建一个

AntiForgeryToken
,在JS中创建一个AJAX请求以将这些信息发送到同一端点。

let token = $('[name=__RequestVerificationToken]').val();

$.ajax({
    url: '/Account/AddNewUser/',
    type: 'POST',
    async: true,
    data: {
        __RequestVerificationToken: token,
        //Required properties
    },
    success: function (response) { ... }
    error: function () { ... }
    complete: function () { ... }
});
ajax asp.net-core-mvc antiforgerytoken
1个回答
0
投票

这两种方法相互兼容吗?

是的

FormTagHelper 将防伪标记注入 HTML 表单元素。 Razor 文件中的以下标记会自动生成防伪令牌:

<form method="post">
    <!-- ... -->
</form>

ASP.NET Core 添加了一个隐藏表单字段,类似于以下示例:

<input name="__RequestVerificationToken" type="hidden" value="CfDJ8NrAkS ... s2-m9Yw">

然后获取 name="__RequestVerificationToken" 的 AntiForgeryToken 并在 JS 中创建一个 AJAX 请求来发送这些信息。

您可以阅读ASP.NET Core 中的防伪了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.