1

I understand Cross-Site Request Forgery and found numerous blogs,articles on web to handle it in asp.net mvc,but have not got a decent links,helpful solutions to deal with CSRF attacks in asp.net web applications.I have ran a security tool on my website,and its reporting the cross site request forgery and showing the risk

It is possible to steal or manipulate customer session and cookies, which might be used to impersonate a legitimate user, allowing the hacker to view or alter user records, and to perform transactions as that user

My question is how to deal with CSRF attacks in ASP.NET web applications?

4

3 回答 3

2

如果您查看您发布的第二个链接,您会看到Html.AntiForgeryToken()MVC 中的验证逻辑:

void ValidateRequestHeader(HttpRequestMessage request)
{
    string cookieToken = "";
    string formToken = "";

    IEnumerable<string> tokenHeaders;
    if (request.Headers.TryGetValues("RequestVerificationToken", out tokenHeaders))
    {
        string[] tokens = tokenHeaders.First().Split(':');
        if (tokens.Length == 2)
        {
            cookieToken = tokens[0].Trim();
            formToken = tokens[1].Trim();
        }
    }
    AntiForgery.Validate(cookieToken, formToken);
}

在您的网络表单应用程序中做同样的事情不应该那么难。

请参阅答案以获取可能的解决方案。

于 2014-07-10T11:54:18.623 回答
1

在 Asp.net Web 表单应用程序中是否有相同的解决方案可以在Global.asax.

在 MVC 中它变得非常简单,但如果旧应用程序是简单的 Web 表单并且想要在全局级别防止此类攻击,那么解决方案将是什么。

于 2014-08-20T05:28:40.963 回答
1

ViewState 机制可用于防止Web 表单应用程序中的CSRF 。

ASP.NET 可以选择维护您的 ViewState。ViewState 指示页面在提交到服务器时的状态。状态是通过放置在每个页面上的隐藏字段和控件来定义的。Viewstate 可以用作 CSRF 防御,因为攻击者很难伪造有效的 Viewstate。伪造有效的 Viewstate 并非不可能,因为攻击者可以获取或猜测参数值是可行的。但是,如果将当前会话 ID 添加到 ViewState,它会使每个 Viewstate 唯一,因此不受 CSRF 影响

另外关于您在 CSRF 上的其他问题:

可能会窃取或操纵客户会话和 cookie,它们可能被用来冒充合法用户,允许黑客查看或更改用户记录,并以该用户的身份执行交易

CSRF 攻击通常不允许攻击者查看任何内容,只能代表登录用户发出请求。但是,如果存在不需要提交当前密码的更改密码选项,则攻击者可能能够使用受害者的会话调用此函数,以便攻击者随后直接以受害者用户身份登录。

于 2014-07-12T07:24:37.893 回答