问题标签 [csrf]
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 - 如何缓解 ASP.NET MVC Ajax.ActionLink 请求的 XSRF?
我的 ASP.NET MVC (v1) 页面上有许多Ajax.ActionLink
's 执行破坏性操作。这是“合法的”,因为DELETE
在这种情况下我将 HttpMethod 设置为,所以它不是破坏性的GET
.
不过,我的问题是如何减轻对此操作的 XSRF 攻击,以便其他站点无法制作相同的 AjaxDELETE
请求以从另一个站点删除用户数据。此 ActionLink 确实出现在包含<%= Html.AntiForgeryToken() %>
但由于 ActionLinks 不发布表单的表单中,因此防伪令牌不会进入控制器,因此无法对其进行验证。
security - REST 和 CSRF(跨站请求伪造)
是否可以针对无状态 RESTful 服务进行跨站点请求伪造?
我不是在谈论服务器记住您通过 cookie 登录的伪 REST。我说的是没有 cookie 的纯服务器上无应用程序状态的 REST。
我正在使用 SSL 和基本身份验证。对于每个请求,授权标头都必须存在。JSP 意义上没有“会话”,尽管在 SSL 级别存在某种会话。
因此,假设我正在查看发出 Ajax 请求的合法网页,并且不知何故我转到同一选项卡或不同选项卡中的不同页面,并且该页面发出相同的 Ajax 请求。(我假设合法网页上没有恶意代码;这完全是另一回事,在这种情况下一切皆有可能。)
当第二个页面发出 Ajax 请求时,浏览器是否会放置相同的 Authorization 标头?即浏览器会说“哦,你想再去那里吗?嘿,我只是碰巧还有钥匙!”?
另外,恶意脚本不能执行 xhr 请求,然后在回调中从 ioargs 获取请求,获取 Authorization 标头和 un-Base64 名称和密码吗?
asp.net-mvc - 响应中不存在 RequestVerificationToken cookie
我的 ASP.NET MVC 应用程序通过使用 ValidateAntiForgeryToken 属性并调用 Html.AntiForgeryToken 以使用令牌值写入隐藏的输入元素并将令牌放入 cookie 来防止 CSRF 攻击。
我的异常日志报告了 HttpAntiForgeryException 的出现,它们看起来像是由有效请求触发的(引荐来源网址看起来正确)。导致异常的 Response 在 Form 字段中还包含 __RequestValidationToken 以及令牌值。但是,请求中缺少必要的 cookie,导致验证失败并引发异常。
我正在尝试思考为什么缺少此 cookie,并提出了以下可能的原因:
- 该域的 Cookie 集合已满。- 如果是这种情况,我希望在每个请求中看到 20/50 个 cookie(顺便说一句,所有用户代理都是 IE7 和 IE8)并且不知何故 cookie 被丢弃了。我在各种异常情况下看到 3 到 23 个 cookie
- 已达到 cookie 的数据限制。- 这不会发生。通过查看日志,我可以看到 cookie 集合很小。
- 在添加 cookie 之前,将返回响应。- 不确定这个。在头部手动调用 Reponse.Flush 会导致异常,说明在发送响应后无法修改 cookie 集合。
- ?
绝望中,我求助于 SO 的人员,并询问我可以调查此丢失 cookie 的任何其他可能原因。
javascript - 如何防止涉及嵌入式 iframe 的 CSRF/XSRF 攻击?
有没有办法限制 iframe 在父级中允许执行的操作?我正在寻找的是一个围绕 Javascript 的安全模型,它看起来像:
两个 'trusted.html' 看起来像:
'SomethingIShouldnt.php' 看起来像:
'untrusted.js' 看起来像:
(呃……抱歉我有点矫枉过正了。)
您将注意到 HTML 代码中不存在的“安全”标签。我正在考虑一些类似于 CSS 选择器的声明,并混合了一些类似 Apache 的安全语法来定义规则。(我没有使用 window.parent 规则,但它希望向阻止跨站点脚本的浏览器展示一个体面的解决方法,这真的很令人沮丧 - “我相信父窗口只能访问我的窗口的高度和标题”)。我希望这样的东西已经以某种形式存在(甚至是规范草案)。但恐怕答案是否定的。
这可以做到(甚至部分)吗?如果不是,那么我需要与谁交谈才能实施这样的事情(标准委员会或浏览器实施者)?当然,假设这甚至有任何意义?
security - 为什么 CSRF 攻击可以通过随机的 CSRF 秘密来阻止?
为了防止 CSRF 攻击,随机生成了一个 CSRF 秘密。
以上来自symfony: http ://www.symfony-project.org/getting-started/1_4/en/04-Project-Setup
既然最终是用户操作的,也就是所谓的代理攻击,设置那个秘密怎么办?
html - CSRF 中间件 - 更改 csrf_token 输出(从 xHTML 到 HTML)
我对 django csrf 中间件有问题...当我使用模板标签 csrf_token 时,我得到以下输出:
但我想要这个输出(HTML不是xHTML:
我试图在 django.middleware.csrf.CsrfViewMiddleware 中查看代码但没有成功:(
那么,如何更改输出 fo csrf_token 标记?
坦克
security - 如何防止使用图像 URL 的跨站点请求伪造攻击?
IMG 嵌入式命令 - 当注入此命令的网页(如 Web 板)受密码保护且密码保护与同一域上的其他命令一起使用时,此功能有效。这可用于删除用户、添加用户(如果访问该页面的用户是管理员)、在别处发送凭据等……这是使用较少但更有用的 XSS 向量之一:
或者:
重定向 302 /a.jpg http://victimsite.com/admin.asp&deleteuser
我允许用户在论坛中发布图片。如何防止这种情况发生?
我正在使用 Java Struts,但欢迎任何通用答案。
.net - 如何解决我的 ASP.Net MVC 应用程序中的 iisreset 后发生的 AntiForgeryToken 异常?
我在使用 ASP.Net MVC 中的 AntiForgeryToken 时遇到问题。如果我在我的网络服务器上执行 iisreset 并且用户继续他们的会话,他们会被退回到登录页面。不可怕,但是 AntiForgery 令牌爆炸了,唯一的办法就是把浏览器上的 cookie 炸掉。
使用版本 1 的 beta 版本时,它在为我读回 cookie 时经常出错,所以我过去常常在请求验证令牌之前对其进行清理,但在它发布时已修复。
现在我想我会回滚到修复测试版问题的代码,但我不禁认为我错过了一些东西。有没有更简单的解决方案,我应该放弃他们的助手并从头开始创建一个新的吗?我觉得很多问题在于它与旧的 ASP.Net 管道如此紧密地联系在一起,并试图将其混入做一些它并不是真正设计要做的事情。
我查看了 ASP.Net MVC 2 RC 的源代码,看起来代码没有太大变化,所以虽然我没有尝试过,但我认为那里没有任何答案。
这是异常堆栈跟踪的相关部分。
编辑:我刚刚意识到我没有提到这只是试图在 GET 请求中插入令牌。这不是在您启动 POST 时发生的验证。
php - 使用 ajax 提交数据时检测到 CSRF 攻击
我正在尝试在 symfony 1.4 中使用 jquery 提交表单,但每次都会弹出 CSRF 攻击检测到的错误。这是我用来提交表单数据的代码:
我错过了什么吗?
谢谢,拉杜。
html - 使用带有 tokenID 的 GET 来确保安全是个好主意吗?
我正在考虑这一点,它似乎 POST 只是不那么容易受到攻击并且更难(要求用户单击某些东西)。
我阅读了有关令牌 ID 和双重提交的 cookie 的信息,但我不确定有什么区别
http://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29_Prevention_Cheat_Sheet#Disclosure_of_Token_in_URL http://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29_Prevention_Cheat_Sheet#Double_Submit_Cookies
现在我有用户 ID(我的表中的 PK)和会话 ID,因此您不能简单地更改您的 cookie ID 并像其他人一样行事。现在似乎我将会话 ID 作为令牌放入每个表单中并检查它们,因为攻击者无法猜测这些令牌。但是,我不喜欢将会话 ID 放入页面以供 ppl 看到的想法。但实际上,这样做有问题吗?如果没有让用户复制/粘贴 html,是否会由于会话 id 在 html 中的普通视图而发生任何攻击?