防止跨站点请求伪造
本文关键字:请求 伪造 站点 | 更新日期: 2023-09-27 18:12:22
我了解跨站请求伪造,并在网上找到了许多博客,文章来处理它在asp.net mvc中,但没有得到一个体面的链接,有用的解决方案来处理asp.net web应用程序中的CSRF攻击。我在我的网站上运行了一个安全工具,它报告了跨站点请求伪造并显示了风险
有可能窃取或操纵客户会话和cookie,它们可能被用来冒充合法用户,从而允许黑客可以查看或修改用户记录,并以用户
的身份执行交易。我的问题是如何处理ASP中的CSRF攻击。. NET web应用程序?
如果你看你发布的第二个链接,你会看到MVC中Html.AntiForgeryToken()
验证的逻辑:
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);
}
在你的web-forms应用中做同样的事情应该不难。
ViewState机制可以用来防止web表单应用中的CSRF。
ASP。. NET有一个维护ViewState的选项。视图状态显示页面提交到服务器时的状态。的状态是通过放置在每个页面上的隐藏字段来定义的控制。Viewstate可以用作CSRF防御,因为攻击者很难伪造有效的视图状态。伪造一个有效的Viewstate并非不可能,因为它是参数值是否可行攻击者。但是,如果当前会话ID被添加到视图状态,然后使每个视图状态唯一,从而不受CSRF
关于CSRF的另一个问题:
有可能窃取或操纵客户会话和cookie,它们可能被用来冒充合法用户,允许黑客查看或更改用户记录,并以该用户的身份执行事务
CSRF攻击通常不允许攻击者查看任何内容,只能代表登录用户发出请求。但是,如果存在不需要提交当前密码的更改密码选项,攻击者可能能够使用受害者的会话调用此函数,以便攻击者稍后直接作为受害者用户登录。
在Asp.net Web表单应用程序中是否有相同的解决方案,将在Global.asax
中处理
在MVC中,它变得非常简单,但如果旧的应用程序是简单的web表单,并希望在全局级别防止这种攻击,那么解决方案将是什么