0

我有一些遗留应用程序当前正在将基本信息发布到 MVC3 表单。我想将其分离到 GET 并传递查询字符串中的值。很容易。但是,我想在请求中添加一个防伪令牌。首先,这似乎是一个不错的选择吗?其次,是否有从非 MVC3 模块到 MVC3 表单实现此类功能的示例?

我的另一种选择是加密查询字符串。

4

2 回答 2

1

由 ASP.NET 实现的 Anti-Forgery Token 旨在作为一种防止 CSRF(即 corss-site-request-forgery)的机制,并且仅适用于 HTTP POST

由于您正在实现GET基于“API”的此令牌将不起作用(请注意限制,例如查询字符串的长度)。

我不确定您的目标到底是什么......根据您的目标,解决方案是加密或签署查询字符串或两者兼而有之。

于 2012-10-15T17:33:04.540 回答
1

你可以在这个 mvc3 动作中发布你想要的每个帖子。您只需确保您的 postdata 与服务器端对象匹配。是的,为了安全起见,您必须使用防伪令牌。

例如,在 javascript 中,您可以使用 jQuery 制作这样的帖子。如您所见,我不使用表单,而只是使用一些 javascript 代码。Mvc 可以完美地处理这个问题。

$.ajax({
    type: 'POST',
    url: urlToYourMvcAction,
    data: {
        name: 'John Doe',
        age: 25
    }, 
    success: successCalback,
    error: errorCallback);

public class Person
{
    public int Id { get; set; }
    public string Name { get; ;set }
    public int Age { get; set; }
}

public class PersonController : Controller
{
    [HttpPost]
    public ActionResult Add(Person person)
    {
          //Your code
    }
}

您可以在旧版应用程序中使用 c# WebClient 对象轻松发出相同的发布请求。您可以使用 fiddler 或开发人员工具来检查请求并传入发布帖子所需的正确参数。

哦,当请求变大时,使用获取请求会给您带来麻烦。帖子是用来发送数据到服务器的。Gets 用于从服务器获取数据。

于 2012-10-15T17:33:15.363 回答