首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CCW中使用ASP.NET MVC3 AntiForgery令牌

在CCW中使用ASP.NET MVC3 AntiForgery令牌
EN

Stack Overflow用户
提问于 2012-10-16 01:18:44
回答 2查看 271关注 0票数 0

我有一些遗留应用程序,它们当前正在将基本信息发布到MVC3表单。我想把它分离到一个GET中,并在querystring中传递这些值。很简单。但是,我想在请求中添加一个防伪令牌。首先,这看起来是一个好的选择吗?其次,有没有将这种功能从非MVC3模块实现到MVC3表单的示例?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-16 01:33:05

由ASP.NET实现防伪令牌旨在作为一种防止CSRF (交叉站点请求伪造)的机制,且仅与HTTP POST一起工作。

因为你正在实现一个基于GET的"API“,所以这个令牌不起作用(注意限制,比如查询字符串的长度)。

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

票数 1
EN

Stack Overflow用户

发布于 2012-10-16 01:33:15

你可以把你想要的每一个帖子都放到这个mvc3动作中。您只需确保您的postdata与serverside对象匹配。是的,为了安全,你必须使用防伪令牌。

例如,在javascript中,你可以用jQuery写一篇像这样的文章。如您所见,我没有使用表单,而只是使用了一些javascript代码。Mvc可以很好地处理这个问题。

代码语言:javascript
复制
$.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对象发出相同的post请求。您可以使用fiddler或开发人员工具来检查请求,并传入创建post所需的正确参数。

哦,当请求越来越大时,使用get请求可能会给您带来麻烦。Posts用于将数据发送到服务器。Gets用于从服务器获取数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12900741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档