AspNetCore 防伪和 Fiddler
AspNetCore Antiforgery and Fiddler
使用 Postman 或 Fiddler 等程序进行 post 调用需要哪些防伪密钥?好像我有一个 cookie 和一个隐藏的表单数据变量。我应该使用哪个,防伪检查如何工作?
我正在使用一个简单的 Web 应用程序 (ASP Core 2.2.) 将用户声明保存为 cookie。
我的创建用户页面:
@page
@model WebAppTry3.Pages.CreateUserModel
@{
ViewData["Title"] = "CreateUser";
Layout = "_layout";
}
<h2>CreateUser</h2>
<form method="post">
<input asp-for="Name" />
<input type="submit" value="SKicka" />
</form>
这是我的表单显示为 HTML:
时的样子
<form method="post">
<input type="text" id="Name" name="Name" value="" />
<input type="submit" value="SKicka" />
<input name="AntiforgeryFieldname" type="hidden" value="<alot of characters...>" />
</form>
我的 Razor Page 模型:
public class CreateUserModel : PageModel
{
[BindProperty]
public string Name { get; set; }
public string Message = "Hm";
public void OnGet()
{
}
public void OnPost()
{
var name = Name;
Message = "Inside the OnPOST";
}
}
我尝试使用此输入数据向 Fiddler 发出 POST 请求,但我仍然收到状态代码 400。当我 运行网络应用程序。
User-Agent: Fiddler
Host: localhost:4138
Content-Length: 0
Cookie: .AspNetCore.Antiforgery.Outs1Mq9yYA=<cookie value>
Request-body
Name: dddd
AntiforgeryFieldname: <long key>
EDIT :问题的目的是了解我需要获取哪些密钥,以便在我的集成测试中发出 POST 请求。
在 Fiddle 尝试了几次之后,我终于成功地创建了一个 POST-request,它以状态码 200 响应。这些是我使用的输入数据(我从 get 请求中复制了它) .
Headers
User-Agent: Fiddler
Host: localhost:4138
Cookie: .AspNetCore.Antiforgery.Outs1Mq9yYA=CfDJ8Ig7LmCVzbFNldSD5Hjy-zm1fb4NILdlKScOD-N5H1EUwD98_nGsCRyWuX0lP82G0nj2tEyaGanTFgIvI9Msv27DNVBh08xFqRjfnB27Fmd0MyXlpW6RH2fX86CXsXZ0lLiUqqNzWcIbQuFgZUt7kQk
Content-Length: 192
Content-Type: application/x-www-form-urlencoded
Request-body
Name=dddd&__RequestVerificationToken=CfDJ8Ig7LmCVzbFNldSD5Hjy-zko3GB6hZztnIO6UPtkgxZMzPmWQbJft4mxROfI4y-V2yqQ3W9-xAn2kbgY2t9f4M8hkzzwfl7HiDOkRNFdji-pjtgkOhP_wXFJok4J04A5tO7ms_57FT8sqb91qM11-IM
使用 Postman 或 Fiddler 等程序进行 post 调用需要哪些防伪密钥?好像我有一个 cookie 和一个隐藏的表单数据变量。我应该使用哪个,防伪检查如何工作? 我正在使用一个简单的 Web 应用程序 (ASP Core 2.2.) 将用户声明保存为 cookie。
我的创建用户页面:
@page
@model WebAppTry3.Pages.CreateUserModel
@{
ViewData["Title"] = "CreateUser";
Layout = "_layout";
}
<h2>CreateUser</h2>
<form method="post">
<input asp-for="Name" />
<input type="submit" value="SKicka" />
</form>
这是我的表单显示为 HTML:
时的样子<form method="post">
<input type="text" id="Name" name="Name" value="" />
<input type="submit" value="SKicka" />
<input name="AntiforgeryFieldname" type="hidden" value="<alot of characters...>" />
</form>
我的 Razor Page 模型:
public class CreateUserModel : PageModel
{
[BindProperty]
public string Name { get; set; }
public string Message = "Hm";
public void OnGet()
{
}
public void OnPost()
{
var name = Name;
Message = "Inside the OnPOST";
}
}
我尝试使用此输入数据向 Fiddler 发出 POST 请求,但我仍然收到状态代码 400。当我 运行网络应用程序。
User-Agent: Fiddler
Host: localhost:4138
Content-Length: 0
Cookie: .AspNetCore.Antiforgery.Outs1Mq9yYA=<cookie value>
Request-body
Name: dddd
AntiforgeryFieldname: <long key>
EDIT :问题的目的是了解我需要获取哪些密钥,以便在我的集成测试中发出 POST 请求。
在 Fiddle 尝试了几次之后,我终于成功地创建了一个 POST-request,它以状态码 200 响应。这些是我使用的输入数据(我从 get 请求中复制了它) .
Headers
User-Agent: Fiddler
Host: localhost:4138
Cookie: .AspNetCore.Antiforgery.Outs1Mq9yYA=CfDJ8Ig7LmCVzbFNldSD5Hjy-zm1fb4NILdlKScOD-N5H1EUwD98_nGsCRyWuX0lP82G0nj2tEyaGanTFgIvI9Msv27DNVBh08xFqRjfnB27Fmd0MyXlpW6RH2fX86CXsXZ0lLiUqqNzWcIbQuFgZUt7kQk
Content-Length: 192
Content-Type: application/x-www-form-urlencoded
Request-body
Name=dddd&__RequestVerificationToken=CfDJ8Ig7LmCVzbFNldSD5Hjy-zko3GB6hZztnIO6UPtkgxZMzPmWQbJft4mxROfI4y-V2yqQ3W9-xAn2kbgY2t9f4M8hkzzwfl7HiDOkRNFdji-pjtgkOhP_wXFJok4J04A5tO7ms_57FT8sqb91qM11-IM