在ASP.NET Web Forms中防止跨站请求伪造(CSRF)攻击有几种方法:
- 使用AntiForgeryToken:在表单中添加一个隐藏的AntiForgeryToken字段,并在服务器端验证该字段。可以使用
<%= Html.AntiForgeryToken() %>
在表单中生成防伪标记,并使用[ValidateAntiForgeryToken]
属性在服务器端验证。 - 验证HTTP Referer:在服务器端验证请求的HTTP Referer头部,确保请求来自预期的来源。这种方法不是完全可靠,因为Referer头部可能被篡改或被某些浏览器禁用。
- 双重提交Cookie:在用户登录时,生成一个随机的令牌,并将其存储在用户的Cookie中。然后,在每个表单提交时,将该令牌作为隐藏字段一起发送,并在服务器端验证令牌的一致性。
- 使用验证码:在敏感操作(如更改密码或删除数据)之前,要求用户输入验证码。这可以防止自动化攻击。
- 限制HTTP方法:只允许POST请求执行敏感操作,并在服务器端验证请求的HTTP方法。