我决定尝试使用双重提交 cookie技术来尝试防止对我正在处理的站点的 XSRF 攻击。所以我在这里写下来的方式是,除了获取信息之外,所有实际执行的操作都将是帖子。获取将是……呃……获取。其次,发布的每个表单都将具有键/cookie 组合。
我的问题是,在 ASP.NET MVC Web 应用程序中实现此功能的最简单方法是什么?
不回答我自己的问题,但这是我最初的想法:
现在我的控制器都继承自一个基本控制器,所以我的第一个想法是重写 OnActionExecuted 方法来检查所需的表单字段是否存在,如果找到它,从那里根据 cookie 验证它并允许发布继续或将其踢到某个错误页面。
对于表单部分,我正在考虑生成我自己的 html 扩展方法,例如... Html.BeginSecureForm() 重载所有与 BeginForm 相同的方法(以防我需要它们)但自动生成伪随机密钥和 cookie 并放置cookie 和表单内的表单字段(如果它是 POST!)自动。
抱歉,如果这有点混乱,我在这些页面中散布着笔记,我正在尝试组织它们。其中一部分是为了弄清楚我对这个 XSRF 安全性的设计。