.Net CSRF 跨站点请求伪造漏洞

问题背景:由于公司需要整改的老系统的漏洞检查,而系统使用的是.Net 4.6.1的框架,无法使用最新的.Net Core官网的文档解决。

解决方法:网上查了很多资料,有用 Referer 过滤器全局过滤请求头,也有用 http请求都带token中验证。最先用了Referer全局过滤伪造的跨域请求域名,发现还是无法通过CSRF检测。最后使用了服务端返回Token给到form前端,后端对Post请求进行校验,发现可以解决问题。

前端代码:

html 复制代码
@using (Html.BeginForm("Index", "Search", FormMethod.Post, new { id = "SearchForm", name = "SearchForm" }))
{
    @Html.AntiForgeryToken()
}

后端代码:

cs 复制代码
public class SearchController   
{     
    [Post]
    [ValidateAntiForgeryToken]
    public ActionResult Index()
    {
        return view();
    }
}
相关推荐
CreasyChan几秒前
C# 委托/事件/UnityEvent 详解
开发语言·c#
就是有点傻1 小时前
如何创建一个WebApi服务端
服务器·c#
白帽子凯哥哥1 小时前
转行网络安全学习计划与报班建议
学习·安全·web安全·网络安全·渗透测试·漏洞挖掘·网安培训
2301_800256112 小时前
第十一章中的函数解读(1)
后端·asp.net
她说彩礼65万3 小时前
C# params使用
开发语言·c#·log4j
专注VB编程开发20年3 小时前
C#内存加载dll和EXE是不是差不多,主要是EXE有入口点
数据库·windows·microsoft·c#
她说彩礼65万4 小时前
C# 反射
java·算法·c#
laocooon5238578865 小时前
C#二次开发中简单块的定义与应用
android·数据库·c#
YJlio5 小时前
BgInfo 学习笔记(11.5):多种输出方式(壁纸 / 剪贴板 / 文件)与“更新其他桌面”实战
笔记·学习·c#
Zhen (Evan) Wang5 小时前
.NET 6 API使用Serilog APM
c#·.net