首页 > 解决方案 > 在 ASP.NET 4.6 WebForms 上实现 AntiForgery 令牌

问题描述

作为标题,我正在尝试在 Asp.net 4.6 框架中实现 AntiForgery 令牌。我有一个 Site.Master 页面,我正在研究这篇文章以适应我的网站 How To Fix Cross-Site Request Forgery (CSRF) using Microsoft .Net ViewStateUserKey and Double Submit Cookie

现在我已经从 c# 转换为 vb.net,并将代码放在我的母版页中。

编译器告诉我

Page.PreLoad += AddressOf master_Page_PreLoad

是一个事件,我不能直接声明。

无论如何,我不明白这是解决问题的正确方法还是存在另一种方法。

标签: asp.netvb.netwebformsantiforgerytoken

解决方案


解决了。和

AddHandler Page.PreLoad, AddressOf master_Page_PreLoad

代替

Page.PreLoad += AddressOf master_Page_PreLoad

关于目标“在 ASP.NET 4.6 WebForm 上实现 AntiForgery 令牌”的另一件事我必须使用的 webmethod

HttpContext.Current.Session("CookieName") 验证在 Page_Init 上生成的令牌,因为在 webmethos 中您不能使用 ViewState。

要在 web 方法中使用 Sessione,在 web 方法的声明中,您必须将 EnableSession 定义为

 <WebMethod(EnableSession:=True), ScriptMethod(ResponseFormat:=ResponseFormat.Json, UseHttpGet:=False)> _
Public Function GetFunction(myjson As String) As String.....

推荐阅读