- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 ASP.NET MVC 应用程序,我计划使用 AntiForegeryToken 保护每个非 GET 请求(POST、PUT、DELETE 等)。
我已经根据 header 中发送的 [__RequestVerificationToken] 实现了经典防伪验证的扩展。这是因为我的大部分调用都是异步的 ($.ajax()),事实证明我更容易以这种方式发送隐藏字段值。
在 _Layout.cshtml(所有页面的模板)中放置一个 @Html.AntiForgeryToken() 并始终只引用那个是否有意义?
我试图理解这个选项和将其放入每种形式之间会有什么不同(我用得不多,因为我的请求几乎都是异步的),但我没有。
谁能帮我解决这个问题?
谢谢
洛伦佐
最佳答案
您可以将它放在您的 _Layout.cshtml 中,并在呈现页面时生成单个 token ,这很好。
虽然对每个请求使用不同的 token 有非常小的安全优势,但如果您的 token 有足够的熵(@Html.AntiForgeryToken()
生成的标准 token 有),那么即使在用户 session 期间,攻击者也几乎不可能猜测 token 。因此在大多数情况下,每个用户 session 一个 token 仍然被认为是安全的。
实际上,尝试为每个请求使用新 token 会导致 Javascript 繁重的应用程序出现各种错误,因为浏览器需要一段不可忽视的时间来实际更改 cookie 值或发送请求等内容,并且频繁的 ajax 请求将导致竞争条件,并且您将很难调试围绕 token 不匹配的错误。
ASP.NET MVC 在这方面仍然专注于传统的基于表单的应用程序,虽然您可以使用它来防止现代 Javascript 密集型应用程序中的 CSRF,但需要进行一些调整(例如自定义属性来实际验证请求中发送的 token header ),您必须编写一些自定义代码来执行此操作。希望 Microsoft 将在未来的版本中添加内置支持。
更新
直接在模板页面 (_Layout.cshtml) 中使用 @Html.AntiForgeryToken() 实现解决方案后,我发现了一个可能与使用自定义声明相关的问题。问题发生在重新验证 UserIdentity 期间。作为引用,我将保留指向另一篇文章的链接,我在其中处理了该问题,并在其中为选择相同实现的人添加了 wotrkaround。 Custom Claims lost on Identity re validation
希望对您有所帮助!
关于ajax - 将 antiforgerytoken 放在 _Layout.cshtml 中是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40610340/
我当前项目中的许多类都有几个只能从类本身内部调用的属性和方法。此外,根据类(class)的当前状态,它们可能会扰乱类(class)的工作。 目前,所有这些接口(interface)都在 .h 文件的主
我想使用ngbTabSet将nav-pills in card-header 和tab-content in card-body。但我不知道该怎么做。 这是我尝试实现的示例(使用 bootstrap.
我正在浏览文档以查找如何允许放置在停靠栏图标上。据我所知,建议您使用 LSItemContentTypes,因为 CFBundleTypeOSTypes 已弃用。但是,我无法让 LSItemConte
我正在尝试在书签中使用 jquery UI 作为 slider 。并且 jquery ui 要求在普通 jquery 文件之后包含该文件。 所以到目前为止我所尝试的只是将脚本附加到 header ,同
您好,我尝试了广泛的谷歌搜索,但似乎没有任何帮助。 这是我的场景: 公司 Logo 存储在外部域/网址(矩形)中。 带有谷歌地图的 Ionic 应用程序,将这些 Logo 作为标记放置在 map 上。
我今天在阅读我的一些 C# 代码时发现了这一行: if (ProgenyList.ItemContainerGenerator.Status != System.Windows.Controls.Pr
我刚遇到this question在 Go FAQ 中,它让我想起了困扰我一段时间的事情。不幸的是,我真的不明白答案是什么。 似乎几乎所有非 C 类语言都将类型放在变量名之后,如下所示: var :
这是有效的 HTML 吗? 最佳答案 作为元素可以包含 phrasing content ,以及属于该组,则有效。 从语义上(并且具有一些常识),如果唯一的内容是 , 不;如果它同时包含文本和图像
这是有效的 HTML 吗? 最佳答案 作为元素可以包含 phrasing content ,以及属于该组,则有效。 从语义上(并且具有一些常识),如果唯一的内容是 , 不;如果它同时包含文本和图像
我有两本 T.Parr 写的关于 ANTLR 的书,我到处都看到美元符号和符号的引用。它也对我有用: term : IDENT -> { new TokenNode($IDENT) }; 或更复杂的东
我在实现段控制时遇到了一些问题。因为我希望它是一个固定的标题,所以当我滚动时我总是可以看到它,我已经在 - (UIView *)tableView:(UITableView *)tableView v
我有一个 20x36px (10x18pt) 的箭头图像,当我选择一个 UIImageView 时,将它拖到我的 View Controller 上然后设置图像,它总是模糊的。我只在我的项目中包含 @
How can I put background image when I hover a link Insert Bg in this a when hov
我需要在我的 .container 中添加(最新的第一个)新分区,但在 .controls (按钮)之后。可能吗? 注意:添加新的分区来保存按钮下方的前置控件对我来说不是一个选择。 HTML 需要保持
我是一名优秀的程序员,十分优秀!