繁体   English   中英

使用CCW的ASP.NET MVC3 AntiForgery令牌

[英]Using ASP.NET MVC3 AntiForgery token from CCW

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

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

ASP.NET实现的Anti-Forgery Token是一种防止CSRF(corss-site-request-forgery)并且只能用于HTTP POST

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

我不确定你的目标是什么......根据你的目标,解决方案是加密或签署查询字符串或两者。

您可以在每个帖子中使用此mvc3操作。 您只需要确保您的postdata与serverside对象匹配。 是的,你必须使用防伪标记来确保安全。

在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或开发人员工具检查请求并传递发布所需的正确参数。

哦,使用get请求可以在请求变大时给您带来麻烦。 帖子用于将数据发送到服务器。 获取用于从服务器获取数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM