如何在ASP.NET WebForms应用程序中防止对Ajax请求的CSRF攻击
您可以创建一个令牌并将其保存在Session [“ CSRF”]中,并在每个页面的HiddenField中呈现该令牌。
protected HiddenField CSRF { get; set; }
protected void page_load(object s, args[] e) {
if(Session["CSRF"]!=null) {
this.CSRF=Session["CSRF"];
}
else {
Session["CSRF"]=Guid.NewGuid().ToString();
this.CSRF=Session["CSRF"];
}
}
因此,无论何时发送请求,都将其添加为数据参数,并在服务器端代码中进行检查。
为每个请求传递此CSRF HiddenField id。
对于ASP.Net Ajax调用,您可以使用ViewState["CSRF"]
,因为默认情况下,更新面板也会发送Page的viewstate :)
var csrf_token = '<%= csrf_value %>';
以下代码将为所有ajax请求添加此令牌
$("body").bind("ajaxSend", function(elm, xhr, s){
if (s.type == "POST") {
xhr.setRequestHeader('X-CSRF-Token', csrf_token);
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句