如何设置 AntiForgeryToken cookie 路径

2024-03-31

前者HtmlHelper.AntiForgeryToken https://msdn.microsoft.com/en-us/library/dd492243%28v=vs.118%29.aspx方法允许人们重写string path已弃用。

[ObsoleteAttribute("This method is deprecated. Use the AntiForgeryToken() method instead. To specify a custom domain for the generated cookie, use the <httpCookies> configuration element. To specify custom data to be embedded within the token, use the static AntiForgeryConfig.AdditionalDataProvider property.", 
    true)]
public MvcHtmlString AntiForgeryToken(
    string salt,
    string domain,
    string path
)

告诉你使用<httpCookies>. BUT httpCookies 元素 https://msdn.microsoft.com/library/ms228262(v=vs.100).aspx没有 PATH 设置。

这是弃用此方法的疏忽吗?覆盖此 cookie 路径的最佳方法是什么? (手动?)在虚拟应用程序中运行网站不会隐式地将应用程序路径添加到 __RequestVeririfcation cookie。


查看弃用消息:

“此方法已弃用。请改用 AntiForgeryToken() 方法。要为生成的 cookie 指定自定义域,请使用配置元素。要指定要嵌入到令牌中的自定义数据,请使用静态 AntiForgeryConfig.AdditionalDataProvider 属性。”

它告诉我们,只要读回伪造令牌,我们就可以验证其他参数。所以即使我们不能设置cookie中的路径,我们也可以设置路径作为属性令牌内。稍后验证它,例如:

public class AdditionalDataProvider : IAntiForgeryAdditionalDataProvider
{
    public string GetAdditionalData(HttpContextBase context)
    {
        return AdditionalData(context);
    }

    public bool ValidateAdditionalData(HttpContextBase context, string additionalData)
    {
        var currentData = AdditionalData(context);
        return currentData == additionalData;
    }

    private static string AdditionalData(HttpContextBase context)
    {
        var path = context.Request.ApplicationPath;
        return path;
    }
}

当 asp.net 生成令牌时,它将存储该应用程序的当前路径(或您想要验证的任何其他唯一值),并且 如果您有另一个应用程序在不同的路径上运行,当令牌发送到该应用程序时(由于缺少 cookie 路径),它将根据该应用程序的属性验证以前的应用程序属性。如果它是一组不同的属性,它将失败并拒绝请求。

此外,查看代码防伪配置.cs http://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.WebPages/Helpers/AntiForgeryConfig.cs,如果应用程序在虚拟目录中运行,则默认情况下它将在 cookie 名称中添加该虚拟目录:

private static string GetAntiForgeryCookieName()
{
    return GetAntiForgeryCookieName(HttpRuntime.AppDomainAppVirtualPath);
}

// If the app path is provided, we're generating a cookie name rather than a field name, and the cookie names should
// be unique so that a development server cookie and an IIS cookie - both running on localhost - don't stomp on
// each other.
internal static string GetAntiForgeryCookieName(string appPath)
{
    if (String.IsNullOrEmpty(appPath) || appPath == "/")
    {
        return AntiForgeryTokenFieldName;
    }
    else
    {
        return AntiForgeryTokenFieldName + "_" + HttpServerUtility.UrlTokenEncode(Encoding.UTF8.GetBytes(appPath));
    }
}

所以它会是这样的:__RequestVerificationToken vs __RequestVerificationToken_L2RIdjAz0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设置 AntiForgeryToken cookie 路径 的相关文章

  • AspNetUserLogins 表身份

    AspNetUserLogins 的用途是什么 是存储用户的登录信息吗 然后我如何用该数据更新该表 AspNetUserLogins 的用途是什么 在Asp net Identity中 Identity系统使用AspNetUserLogin
  • 如何将jquery.post中的数据发送到使用ViewModel作为参数的mvc控制器?

    我正在使用 ASP NET MVC 编写应用程序 我有带有操作的控制器 它使用一些 ViewModel 作为参数 如何使用 jquery post 将表单数据发送到该 mvc 控制器 post Yourcontroller YourActi
  • MVC3、Ninject、MvcSiteMapProvider - 如何将依赖项注入到重写方法

    我有一个正在使用的 MVC3 应用程序Ninject http ninject org and Mvc站点地图提供者 http mvcsitemap codeplex com 我创建了此类 MvcSiteMapProvider 使用它来动态
  • MVC 6通过Nuget添加后引用Jquery

    我创建了一个新的 MVC 6 项目 空模板 通过 NuGet 添加了 JQuery 那么如何在 Layout 文件中或您想要使用它的任何地方引用它 我没有包含 Jquery 的脚本文件夹 HERE
  • 依赖注入和 ModelStateWrapper

    在教程中使用服务层进行验证 http www asp net learn mvc tutorial 38 cs aspx产品服务的构造函数如下所示 ProductService IValidationDictionary validatio
  • 控制器中的异常处理 (ASP.NET MVC)

    当您自己的代码抛出异常并从控制器中的操作调用时 应该如何处理 我看到很多最佳实践的例子 其中根本没有 try catch 语句 例如 从存储库访问数据 public ViewResult Index IList
  • 无法验证 CSRF 令牌的真实性 Rails/React

    我的 Rails 应用程序中有一个 React 组件 我正在尝试使用它fetch 发送一个POST对于我在本地主机上托管的 Rails 应用程序 这给了我错误 ActionController InvalidAuthenticityToke
  • 将此 XML 反序列化为对象的最佳方法

    在我见过的与我的类似的其他示例中 有一个根节点 然后是一个数组节点 然后是一堆数组项 我的问题是 我的根节点is我的数组节点 所以我见过的示例似乎不适合我 而且我无法更改 XML 架构 这是 XML
  • Kendo Ui MVC EditorTemplateName 在 PopUp 编辑模式下不起作用

    我想在 Kendo Ui 网格中使用 EditorTemplateName 作为外键列 当网格编辑模式为内联时 一切正常并且我的模板已加载 但是当将模式更改为弹出时不加载模板 如何修复它 Html Kendo Grid
  • JQuery Ajax 和将多个复杂对象发布到 asp.net MVC 控制器

    您好 将多个参数发布到 mc 控制器方法时出现问题 controller HttpPost public ActionResult SaveSomething SomeDomainObject domainObject bool anOpt
  • 注销按钮在 mvc 应用程序中不起作用

    我有一个具有不同用户帐户和密码的 MVC 应用程序 登录功能工作正常 但当我单击注销按钮时 出现 404 错误 应用程序中的服务器错误 无法找到该资源 描述 HTTP 404 您正在查找的资源 或其依赖项之一 可能已被删除 名称已更改或暂时
  • 在执行 ASP.NET 的 Visual Studio 2008 中未声明“__o”

    在执行 ASP NET MVC 时 我在 Visual Studio 2008 中经常遇到这个恼人的错误 bug 未声明 o 问题是什么 我该如何解决 只需将其添加到页面顶部即可 所以现在我的 ASP Net 内容占位符如下所示
  • MVC4更新部分视图

    我正在开发一个简单的 MVC 应用程序 我有主视图 部分视图和控制器 这是我的主要视图 model partitalViewTest Models Qset div class transbox style height 1 Html Pa
  • 如何在 ASP.Net MVC 中执行 301 永久重定向路由

    如何在 ASP NET MVC 中执行 HTTP 301 永久重定向路由 创建一个继承自 ActionResult 的类 public class PermanentRedirectResult ActionResult public st
  • Automapper实体框架外键为空

    我正在尝试使用实体框架更新数据库 我使用自动映射器将实体映射到视图模型 并以相同的方式将其映射回来 HttpPost ValidateAntiForgeryToken public ActionResult Edit FromJson My
  • 仅为登录用户显示菜单项

    我是 ASP NET MVC 新手 正在使用该框架的 1 0 版本 我有一个 site master 页面 其中包含以下硬编码菜单 div ul li li li li li li li li ul div
  • MVC5 实体框架的问题

    我在我的 Web 应用程序中使用 Visual Studio 2013 中的 ASP NET MVC5 Entity Framework 6 我正在尝试我的模型工作 但由于某种原因而出现错误 我已经尝试过 Fluent API 和它自己的模
  • Asp.Net Mvc 无法注销

    这是我的登录代码 var expire DateTime Now AddDays 7 Create a new ticket used for authentication var ticket new FormsAuthenticatio
  • 如何在 DropDownList 中保留空格 - ASP.net MVC Razor 视图

    我在视图中通过以下方式绑定我的模型 问题是我的项目文本是格式化文本 单词之间有空格 如下所示 123 First 234 00 123 AnotherItem 234 00 123 Second 234 00 我想保留此项目文本中的空格 即
  • If else 在 Web 网格列中

    如何在 webgrid 列中添加条件 if else grid GetHtml tableStyle table table bordered columns grid Columns grid Column RealName Name g

随机推荐

  • 学习游戏开发,有什么书推荐吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 通过 SSH 执行 sudo 的正确方法是什么?

    我有一个脚本 它通过 SSH 在远程服务器上运行另一个脚本sudo 但是 当我输入密码时 它会显示在终端上 否则它工作正常 ssh user server sudo script 执行此操作的正确方法是什么 以便我可以输入密码sudo通过
  • 使用 Windows 服务手动实现 IoC

    我是 IoC 的新手 因此一直在遵循 Jeffery Palermo 在他的帖子中提供的示例http jeffreypalermo com blog the onion architecture part 1 http jeffreypal
  • SQL:限制链接到每个连接行的行

    我有某些情况需要 MySQL 查询的某些结果集 让我们先看看当前的查询 然后问我的问题 SELECT thread dateline AS tdateline post dateline AS pdateline MIN post date
  • Python 中(大)1554 x 1554 矩阵的行列式

    我需要在 python 中计算单精度的大型 1554 1554 值矩阵的行列式 这样做时我遇到了运行时警告 import numpy as np from numpy import linalg as LA a np random rand
  • 我可以在不使用 npm、VS、Node 等而只使用 JS 代码本身的情况下转换 ES6-ES5 吗?

    我试图让 Firefox 在 ES6 中运行 Promise 但遇到了触发错误的 let 关键字 语法错误 let 是保留标识符 更改脚本标签以包含 类型 应用程序 javascript 版本 1 7 没有用 所以我正在寻求转换代码 我的情
  • Angular 服务测试出了什么问题?

    我有一个调用外部网络服务的服务 angular module myApp services service autoCmpltDataSvc function http var innerMatch function data return
  • 如何管理 mpz_t 数组

    我正在使用 GMP 我需要一系列mpz t sizeof mpz t 给出 16 但我存储的数字比这个大得多 做mpz t 就地 成长 i e 我是否需要分配更多内存并允许就地增长 或者 GMP 是否在其他地方为它们分配空间并仅保留引用 在
  • 忽略拼写检查中的文本框

    我正在尝试创建一个仅对特定单元格进行拼写检查的宏 我已成功对单元格进行拼写检查 但由于某种原因 拼写检查向导随后继续运行 并尝试检查电子表格上的任何文本框 下面是代码 Range C8 Select Selection CheckSpell
  • 如何限制 .net / mono 进程的内存大小

    假设您有一个用 C 编写的应用程序 单进程 默认情况下 应用程序分配巨大的虚拟内存 远远超过其需要 例如驻留内存约为 10mb 而虚拟内存约为几 GB 在 Java 中 可以使用一个选项来限制这一点 java mx128m 如何对 net
  • 截断 MD5 的 ECDF 图

    在这个link https stackoverflow com questions 8184941 uniform distribution of truncated md5 它表示截断的 MD5 是均匀分布的 我想使用 PySpark 检
  • 在 Python 中迭代并从多维数组中选择特定数组

    想象一下我有这样的东西 import numpy as np arra np arange 16 reshape 2 2 4 这使 array 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 我想创建一个沿着特定
  • JavaFX TextArea如何设置带有自动换行符的文本

    在我的应用程序中 我使用了两个Tabs 在第一个中我放置了一个HtmlEditor在第二个中我放置了一个TextArea HTML 选项卡是默认的 当用户创建 HTML 输入时 他可以切换到TextArea以便直接查看或更改 HTML 源代
  • Webpack 未加载 Vue 的单文件组件 CSS

    Webpack 正在编译单个文件组件 但不加载 CSS HTML 和 Vue 已正确呈现 但没有 CSS 看来是webpack配置的问题 知道出了什么问题吗 我在用着webpack dev server加载开发服务器 src index h
  • 是否有可能 - 在 Flutter Web 应用程序中插入 google AdSense?

    我尝试在我的网站上插入下一个代码 Google AdSense 但目前尚未成功 代码是 1 有一段时间我尝试了带有类似句子的 dart js js context callMethod 但是 认为它不起作用 因为我们需要展
  • Ocaml,用列表中的给定元素替换所有指定元素

    我正在编写一个 ocaml 项目 其中我有一个函数可以替换所有 在字符列表中 E 这是我的建议代码 let rec string lst change E lst match lst with gt let a E a h t if h g
  • 在 PAdES 第 4 部分的情况下,带有文档锁定的签名无效

    我遇到一个问题 我在 PAdES 第 4 部分的情况下设置了文档锁定功能 执行文档时间戳签名后签名无效 文档锁定功能的代码片段如下 PdfSigFieldLock pdfSigFieldLock new PdfSigFieldLock pd
  • 使用 PHP 发送带有 WSDL Soap 请求的 Soap 标头

    我对 SOAP 非常陌生 我正在尝试用 PHP 实现一个使用 ASP NET Web 服务的快速测试客户端 Web 服务依赖于包含授权参数的 Soap 标头 使用 WSDL 时是否可以将 auth 标头与肥皂请求一起发送 My code p
  • 拖动左上角时如何调整div大小?

    In CSS3 resize http www w3schools com cssref css3 pr resize asp 要调整大小的图标位于右下角 如何使其显示在左上角并使用户能够相应地调整大小 我发现了here http dev
  • 如何设置 AntiForgeryToken cookie 路径

    前者HtmlHelper AntiForgeryToken https msdn microsoft com en us library dd492243 28v vs 118 29 aspx方法允许人们重写string path已弃用 O