问题标签 [antiforgerytoken]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc - Mvc3 Antiforgery 令牌多选项卡
我们在登录页面上遇到了与防伪令牌有关的特定问题。如果用户仅使用一个活动窗口登录,则一切正常,但是如果用户在两个不同的窗口中打开登录页面并从窗口 A 登录(没有问题将登录),然后在此窗口中返回从窗口 B 登录用户将收到“未提供所需的防伪令牌或无效”。
有没有办法解决这个问题,然后从视图/控制器操作中删除防伪令牌?我们希望拥有令牌以提高安全性!
这与这个问题非常相似,但是这是针对 mvc2 MVC ValidateAntiForgeryToken 多选项卡问题提出的
asp.net-mvc - 有什么理由不信任 ASP.NET AntiForgeryToken?
我知道 Stack Exchange 站点不使用内置的 ASP.NET MVC@Html.AntiForgeryToken()
来防止 XSRF/CSRF 攻击。Stack Exchange 方法不是根据 web.config 的machineKey部分创建一个以非常长的值__RequestVerificationToken
命名的fkey
隐藏输入,而是创建一个以更简洁的值命名的输入。这显然是一个 Guid,并且基于来自Google Code 上 Stack Exchange Data Explorer 项目的证据,该值与每个单独的用户相关联,在您登录或注销之前保持相当稳定。
此外,Stack Exchange 值在页面上是恒定的,并且可供客户端脚本使用,因此用于投票的 Ajax 帖子和类似的事情也使用令牌。相比之下
那么为什么 Stack Exchange 会向自己的鼓手进军呢?
- 有理由不信任 AntiForgeryToken 吗?
- AntiForgeryToken 是否有一些 Stack Exchange 团队不愿意接受的限制?如果有,它们是什么?
- 或者,当 Stack Overflow 启动时,AntiForgeryToken 只是不存在(它在 MVC Futures 项目中开始存在),如果他们今天从头开始,他们会使用 AntiForgeryToken?
我一直无法在 Stack Exchange 团队中找到 Jeff 或其他人的任何博客文章来解释 SE 网络上 XSRF 预防策略背后的指导原则。如果他们中的一个人可以写一篇文章,那将是非常好的,当然假设它可以在不产生漏洞的情况下笼统地完成。对于我们这些想要确保我们的网站安全但又不完全放心只是盲目地相信微软会为我们做这件事的人来说,这将是非常有价值的信息。
asp.net-mvc - 为什么即使使用静态机器密钥也会随机发生 HttpAntiForgeryException?
我们有一个在 Windows Azure(最新的 2.x OS 版本)上运行的 ASP.NET MVC 2 (.NET 4) 应用程序,带有两个 Web 角色实例。
我们使用 MVC 为所有 POST 请求提供的防伪令牌,并且我们在 web.config 中设置了一个静态机器密钥,因此一切都可以在多台机器上运行并跨重启。99.9% 的情况下它都能完美运行。
然而,我们时不时地记录一个 HttpAntiForgeryException,并显示消息“未提供所需的防伪令牌或无效”。
我知道问题可能是浏览器中不允许使用 cookie,但我们已经验证了 cookie 已启用并且可以正确地来回发送。
该错误发生在各种浏览器上,显然会给用户带来问题,因为他们必须重复操作,否则可能会丢失一些数据。可以说,我们无法在本地重现该问题,但它只发生在 Windows Azure 上。
为什么会这样?我们怎样才能避免呢?
asp.net-mvc-3 - 使用删除链接删除对象时如何包含 @Html.AntiForgeryToken()
我有以下ajax.actionlink
要求Delete action method
删除对象:-
但是有没有办法包含@Html.AntiForgeryToken()
在Ajax.actionlink
删除调用中以确保没有攻击者可以发送错误的删除请求?
BR
asp.net-mvc - AntiForgeryToken 与使用 ViewModels 的 Jquery Ajax 调用?
我在这里通读了关于让 AntiForgeryToken 与 Jquery ajax reuests 一起工作的内容,我基本上必须确保使用类似的东西在我的 post/ajax 调用中包含令牌
但是...我正在使用 ViewModels 并创建我的视图模型对象,分配我的值,然后对其进行 JSON.stringify 处理并将其作为数据传递(如下所示)
我有点困惑如何使用当前设置传递令牌?非常感谢任何建议。
asp.net - 使用 WebForm 中的 MVC2 AntiforgeryToken
背景
我需要使用 WebForms 页面(托管在 cms 中)中的 AntiForgeryToken。该页面应将数据发布到作为解决方案一部分的 MVC 2.0 操作。该操作应使用 ValidateAntiForgeryToken 属性。
我确实从这里尝试了解决方案:Using an MVC HtmlHelper from a WebForm但它似乎不起作用,因为渲染的 antiforgerytoken 在控制器操作中被指示为无效。
当前解决方案
现在我已经解决了这个问题,这样我就有了一个可用的操作来渲染一个部分视图,该视图只包含一个带有防伪标记的输入标签。
看法
该页面使用 javascript 将 antiforgerytoken 拉入如下形式:
形式
获取防伪令牌
只要表单发布根据 ValidateAntiforgeryToken 属性有效,这将起作用。
问题
以这种方式将防伪令牌添加到表单中是否存在任何安全问题?
有没有更简单的方法我不干?
asp.net-mvc - ASP.Net MVC 4 RC 中不推荐使用 AntiForgeryToken
我刚刚安装了 ASP.Net MVC 4 RC 来替换 ASP.Net MVC 4 beta。尝试运行现有应用程序时,我收到一条AntiForgeryToken
已弃用的错误消息。这是我的代码:
- - 更新 - -
ASP.Net MVC 4 RC 已经废弃了 ValidateAntiForgeryToken 属性和 AntiForgeryToken html 帮助器的 Salt 属性。所以,现在我的代码如下所示:
控制器:
形式:
查看生成的 HTML,AntiForgeryToken 仍会生成隐藏字段并提供加密值。我的行动仍然有效。但是我失去了指定要在加密过程中使用的密钥的能力。我不太确定这个过程是如何工作的,但在我知道我在动作和表单上设置盐值之前。这些值必须匹配才能使操作接受帖子。那么,你现在如何设置盐值呢?我认为它与 AntiForgeryConfig AdditionalDataProvider 有关,但我找不到任何关于如何使用 AntiForgeryConfig AdditionalDataProvider 的谷歌搜索。请帮忙。
谢谢
asp.net-mvc - Ajax post throws 未提供所需的防伪令牌或无效
我正在尝试使用防伪机制来保护我的 ajax 帖子。
首先,我在视图中添加了 antiforgerytoken 辅助方法调用
然后调整了我的 jquery post call
当然,我用 ValidateAntiForgeryToken 装饰了我的操作方法
但在提交表单后,它会抛出A required anti-forgery token was not provided or was invalid错误。
我已经删除了令牌 cookie,并且我已经重新启动了浏览器。
我错过了什么吗?
ajax - Anti Forge 令牌和 Ajax JSON Post 不起作用
我正在运行 MVC3、.Net 4 和 VS2010。我有以下示例项目来说明问题。
我的控制器代码
我的观点和 JavaScript 代码
这里我有 2 个按钮,第一个触发表单发布,第二个触发 Ajax 发布。表单发布工作正常,但 Ajax 没有,A required anti-forgery token was not supplied or was invalid.
即使我已经在我的 JSON 中包含了令牌,服务器也会抱怨。
知道我的代码有什么问题吗?
android - Android:wifi和3g之间的HttpPost内容类型标题和正文不同
一段时间以来一直试图弄清楚这个有什么问题。我正在使用 HttpClient.execute 向我的服务器 api 发出带有 json 正文的发布请求。在普通 wifi 和大多数 3g 下工作正常,但特别是在具有 AT&T 数据计划并且它在 3g 上的手机上,当我尝试执行请求时,我收到了一个 HttpResponseException,状态码为 422。对 422 做了一些研究,它说它是由于到:
“422 Unprocessable Entity (WebDAV) (RFC 4918),请求格式正确,但由于语义错误而无法遵循。”
所以我猜测请求的发出方式出了点问题,但我在形成请求时做同样的事情,无论我是在 wifi 还是 3g 上。关于可能导致此错误的任何想法?
编辑:看起来我的服务器正在使用伪造保护来捕捉帖子。关闭它,错误停止,但api没有通过。挖得更深一点,打印出服务器实际接收到的内容,比较了 wifi 的开启和关闭,发现了两个不同之处。首先,3g 上的 body 是空的,好像它被阻止发送。其次,标头更改了正在发送的内容类型:
wifi: "HTTP_CONTENT_TYPE"=>"application/json" att 3g: "HTTP_CONTENT_TYPE"=>"text/plain; charset=ISO-8859-1,application/json"
鉴于我正在像这样设置连接,我期待“应用程序/json”:
任何想法为什么当我转移到 3g 时情况会发生变化?
更新:运行 tcpdump,看起来我从 android 发送的内容在 wifi 和 3g 之间完全相同,所以似乎是提供者正在更改我的数据。除了 HTTPS 之外,还有其他建议的策略吗?