反 CSRF cookie?

2024-04-14

我正在构建一个大量使用ajax 的应用程序。大多数反 CSRF 解决方案都围绕将一些信息放入视图状态并在发布时处理该数据。但是,我无权访问 ajax 调用中的视图状态。

我计划生成一个 GUID 以在 cookie 和会话状态中插入令牌,使 cookie 在用户注销时过期,在每个请求时修改 cookie 令牌和会话状态,并使用 httpmodule 通过比较什么来完成工作在访问 Web 服务或页面方法之前,在会话中处理从客户端返回的内容。

这会让我的应用程序获得 CSRF 证明吗?

Thanks.


No.“反 CSRF”和“cookie”不能放在一起。正如 Thilo 简洁指出的那样:

Cookie 是 CSRF 发挥作用的首要因素......

一个好的初步阅读是跨站请求伪造 http://en.wikipedia.org/wiki/Cross-site_request_forgery文章,其中总结了 CSRF 的大部分内容:

如果 Bob 的银行将他的身份验证信息保存在 cookie 中,如果 cookie 尚未过期,则 Bob 的浏览器尝试加载图像将使用他的 cookie 提交提款表格,从而在未经 Bob 批准的情况下授权交易。

问题是浏览器总是有“有效的cookie”。然而,GUID——真的,只是a nonce http://en.wikipedia.org/wiki/Cryptographic_nonce——可以传送back通过其他方式到服务器......这实际上就是它在视图状态中的情况。

CSRF 预防机制#1(根据维基百科):

在所有表单提交和副作用 URL 中都需要秘密的、用户特定的令牌防止 CSRF;攻击者的站点无法在其提交内容中放入正确的令牌。

重要的是这个秘密(希望是随机数以避免重放攻击)是部分数据(URI 或内容)正在发送,而不是通过 cookie 传输。

快乐编码。


考虑一种可以实现的方法:

让服务器在建立会话时生成随机数(并将其存储在会话数据中)。然后在每个 AJAX 请求上发送回这个随机数——或者作为 URI 的一部分或作为某些 POST 数据*.

服务器服务器应仅根据此随机数以及它是否与会话状态中存储的随机数匹配来接受/拒绝请求。 (会话状态可以通过 cookie 维护:假设随机数是秘密的,则通过不同通道传输的随机数将阻止此 CSRF。)

随机数可以通过多种方式传输到客户端,包括但不限于隐藏字段、JavaScript 变量、直接链接操作,甚至 cookie(只读!不用于验证!)。

*当然,存在许多重叠的安全问题(和预防机制),简单的 XSS 可以绕过最复杂的反 CSFR。可能值得考虑使用经过充分测试的框架......

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

反 CSRF cookie? 的相关文章

  • mvc 2中的图像上传和预览

    我正在通过转换 asp net 网站来学习 mvc 2 在我的页面中 我必须上传图像并显示图像的预览 下面给出了我的 asp net 页面的屏幕截图 我将模型创建为 public class Contest public int conte
  • 使用 SendMessage 通过电子邮件发送文件附件而不保存文件

    我可以发送电子邮件和所有内容 但无法创建有效的 Attachment 放入我的电子邮件中 我在网上找到的所有示例都假设它以某种方式保存在我的计算机本地并通过路径链接它 但事实并非如此 在我的方法中 我使用 Winnovative 创建文件
  • jquery ajax可以调用外部webservice吗?

    jquery ajax代码可以调用吗网络服务来自另一个域名或另一个网站 像这样 ajax type POST url http AnotherWebSite com WebService asmx HelloWorld data name
  • 限制违反架构 - asp.net MVP

    如果我们在应用程序中定义了层次结构 对于前三层架构 我们如何限制后续开发人员违反规范 例如 在 MVP 不是 ASP NET MVC 架构的情况下 演示者应该始终绑定模型和视图 这有助于编写正确的单元测试程序 然而 我们也遇到过这样的情况
  • 限制 SQL Server 连接到特定 IP 地址

    我想将 SQL Server 实例的连接限制为特定 IP 地址 我想阻止来自除特定列表之外的任何 IP 地址的任何连接 这是可以在 SQL Server 实例或数据库中配置的东西吗 听起来像是你会使用Windows防火墙 http tech
  • 生产环境的 Flask-Login 与 Flask-Security

    我正在构建一个功能 供用户注册 登录 验证和授权自己 特别是使用 Python Flask 作为后端 我找到了一些解决方案 例如flask login and flask security 据我了解 flask login实际上并没有进行任
  • SQL参数化查询不显示结果

    我的 DataAcess 类中有以下函数 但它没有显示任何结果 我的代码如下 public List
  • 如何从内容页检索母版页中的控件

    当我最近问一个关于如何从内容页检索母版页中的控件 许多人建议我使用内容页面中的这段代码 Label lbl this Master Page FindControl uxLabel as Label Note any server cont
  • 当用户告诉浏览器“刷新”时,是否应该填写 HTTP_REFERER?

    我正在尝试使用引用标头检查作为深度防御 即多种安全技术之一 但请注意仅依赖于任何一种技术 有时 MSIE 似乎不包含刷新时的引荐来源网址 这是预期的行为吗 无论如何 我是否可以检测刷新 以便我知道缺少引荐来源网址是可以的 是的 我知道引荐来
  • 为什么静态方法不能用作 ASMX Web 服务中的 Web 服务操作?

    我只是想了解为什么我不能在 Web 服务中使用静态 Web 方法 为什么会受到限制 有人可以给我对此进行简洁的解释吗 答案是 因为你不能 它不是这样设计的 其设计是 将创建 Web 服务类的实例 然后调用实例方法 我只能猜测微软为什么这样设
  • 如何在 Web 表单中进行 Html.Encode

    我有一个 ASP NET Web 窗体应用程序 有一个带有文本框的页面 用户在其中输入搜索词用于查询数据库 我知道我需要防止 JavaScript 注入攻击 我该怎么做呢 在 MVC 中我会使用Html Encode Web 表单中似乎无法
  • 如何强制 Visual Studio 2008 生成 Designer.cs,例如不管怎样.aspx.designer.cs

    我在使用 Visual Studio 2005 使用网站技术生成的 Asp Net V2 0 中有一些 Web 表单 想要将它们导入到设置为 v3 5 Asp Net MVC 的 Visual Studio 2008 我在其中使用项目技术
  • 在没有默认 java.policy 文件的情况下运行 Java 安全管理器

    我不想修改 java 主目录中的任何内容 但是 我担心有时我的默认 java policy 文件可能过于宽松 当我使用以下命令运行 java 时 有没有办法使用指定的策略文件作为唯一的策略文件 Djava security manager
  • Web 服务需要一个 DataSet 对象,我如何通过 ColdFusion 或原始 XML 提供该对象?

    我需要调用用 NET 编写的 Web 服务 进行调用的应用程序是用 ColdFusion 编写的 Web 服务期望的参数之一是 DataSet 对象 我无法在 ColdFusion 中实例化 NET DataSet 对象 如何向 Web 服
  • 在javascript中访问隐藏字段值

    我的表单中有一个隐藏字段 我正在服务器上设置隐藏字段的值并尝试从 javascript 访问该值 我收到错误 无法获取属性 值 的值 对象为 null 或未定义 如果我查看源代码 则会设置隐藏字段值 并且隐藏字段的 ID 与我正在调用的 I
  • 无法将 MVC 4 部署到服务器

    我的 Web 应用程序只是一个用 VS 2010 MVC 4 制作的简单 Web 应用程序 没有任何外部代码 它只是 VS 2010 的默认应用程序 我有 Plesk 的豪华 Windows 托管 我从未更改过帐户中的任何功能 我将所有文件
  • 优化视图状态

    是否有人对优化 ASP NET 应用程序的视图状态有任何想法或参考可以向我指出 我不想把它全部关闭 优化它的主要目标是提高性能 所以我不想运行一个昂贵的函数来递归地禁用某些控件的视图状态 因为该函数会减慢速度页面的加载时间会达不到目的 有任
  • 如何获取正在访问 ASP.NET 应用程序的当前用户?

    为了获取系统中当前登录的用户 我使用以下代码 string opl System Security Principal WindowsIdentity GetCurrent Name ToString 我正在开发一个 ASP NET 应用程
  • 不可勾选的单选按钮与专有的复选框

    从 UI 角度来看 是拥有一组具有取消选中功能的单选按钮更好 还是拥有一组独占的复选框 意味着一次只能选中一个 更好 Update 我没想到对此会有如此负面的反应 如果我给出一个更接近其使用方式的示例 也许会有所帮助 我有一个充满数据绑定内
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P

随机推荐

  • Prettier 不在 React 项目工作

    我正在将我的爱彼迎 eslint 规则迁移到更漂亮的规则 但我遇到了一些问题 这是我的 eslintrc parserOptions ecmaVersion 6 env browser true node true parser babel
  • 无法从配置的远程连接到存储库。你想检查 .git 配置

    我尝试将我的存储库共享到 Android Studio 中的 Github 并收到以下消息 无法从配置的远程连接到存储库 您可能需要检查 git 配置 如果我忽略并共享 Github 会创建一个空存储库并且不会上传 git 文件 我重新安装
  • 在应用程序结算项目中未发现错误?

    我一直在尝试在我的应用程序中实施 Google Play 的应用程序计费 我正在尝试实现示例应用程序并对其进行测试 我已遵循其中的所有程序http developer android com guide google play billin
  • matlab:有没有办法将变量从结构导入/提升到当前工作区?

    function y myfunc param C param C L param L Kp param Kp Ki param Ki 有没有办法概括上面的代码 我知道如何使用来概括结构访问fieldnames and getfield 但
  • Airflow Worker - 连接中断:IncompleteRead(0 字节读取)

    使用 Airflow Worker 和 Web 服务器 调度程序作为在 EC2 上的 Kubernetes Engine 上运行的 Docker 映像 我们有一个任务KubernetesPodOperator这是资源密集型的 每 15 分钟
  • std::make_index_sequence 和 std::index_sequence 的详细信息

    我很喜欢增加可变参数模板 并开始摆弄这个新功能 我正在尝试了解实施细节std index sequence s 用于元组实现 我在那里看到了示例代码 但我真的想要一个简单的逐步解释 说明如何std index sequence已编码 并且每
  • 合并字典并添加值

    我有几个字典 我想将它们组合起来 这样如果一个键位于多个字典中 则值会添加在一起 例如 d1 1 10 2 20 3 30 d2 1 1 2 2 3 3 d3 0 0 merged 1 11 2 22 3 33 0 0 在 Python 中
  • 如何使用Java读取(.bib)文件格式的内容

    我需要读取 bib 文件并将其标签插入到 bib entries 的对象中 文件很大 几乎 4000 行 所以我的第一个问题是使用什么 bufferedReader 和 FileReader 一般格式是 ARTICLE orleans01D
  • 最坏情况时间复杂度 put/get HashMap

    当 Hashmap 的键的哈希码始终相等时 它的最坏情况时间复杂度是多少 根据我的理解 由于每个键都有相同的哈希码 因此它总是会进入同一个存储桶并循环遍历它以检查 equals 方法 因此对于 get 和 put 时间复杂度应该是 O n
  • RenderFlex 底部溢出了 99241 像素,并且 Null 检查运算符用于 null 值

    小部件库捕获异常 构建 BottomTabBtn dirty 时抛出以下 CastError 对空值使用空检查运算符 The relevant error causing widget was BottomTabBtn file C Use
  • Node.js 中 I/O 密集型的含义是什么

    我正在学习 Node js 还发现 Node js 最适合用于 I O 密集型任务 这让我有点困惑 因此 经过一些研究 我发现了这样的说法 读取和 或写入大量数据的应用程序 那么 这是否意味着 Node js 最好与数据一起使用 即读取大数
  • Camel-Jetty http代理+大响应数据导致问题:缓冲容量超出

    jetty专家 我在通过camel jetty作为http代理获取大数据时出错 欢迎任何经验 想法 建议 提前致谢 路线构建器代码 from servlet balancer matchOnUriPrefix true to jetty h
  • JVM 规范更新

    JVM 规范第 2 版的日期是 1999 年 自那时以来 我应该考虑学习哪些重要更新 如动态调用 这当然是为了了解现代 JVM 实现的内部原理 特别是 HotSpot 访问此链接http wikis sun com display HotS
  • 快速设置我的条形图的水平滚动

    我正在使用 Daniel Cohen Gindi 的图表框架 它很棒 但是 我希望我的条形图水平滚动以查看其他数据 我尝试添加滚动视图 但没有成功 我也尝试了不同的值 例如 barChart setVisibleXRangeMaximum
  • 捕获 Exception 类而不是 Exception 子类是不好的做法吗?

    我有一个抛出 Exception 子类的方法 如果我对 Exception 的每个子类执行相同的捕获功能 那么仅捕获 Exceptions 类是不好的做法 还是应该单独捕获每个异常 是的 这是不好的做法 因为它使 catch 块捕获不应该捕
  • 在silverlight中获取xml中的所有节点名称

    我创建了一个这样的xml
  • 带有 CoordinatorLayout 的 Snackbar 禁用关闭

    我正在使用支持 浮动操作按钮 Snackbar 协调器布局 我需要协调器布局这样如果SnackBar显示的是浮动操作按钮向上移动以为 Snackbar 腾出空间 为了更好地理解 请检查此video http material design
  • JSF 表格和德语变音符号

    我在我的一个 JSF 这是一个 Facelet 中遇到了一个奇怪的问题 我正在使用 Richfaces 在一页上我得到了一个普通表单
  • Application.Current.Shutdown() 不会终止我的应用程序

    我刚刚启动了一个新的 C WPF 应用程序 并使用了来自WPF Contrib 项目 http wpfcontrib codeplex com 我可以启动程序 将 退出 菜单项添加到 NotifyIcon 的 ContextMenu 然后将
  • 反 CSRF cookie?

    我正在构建一个大量使用ajax 的应用程序 大多数反 CSRF 解决方案都围绕将一些信息放入视图状态并在发布时处理该数据 但是 我无权访问 ajax 调用中的视图状态 我计划生成一个 GUID 以在 cookie 和会话状态中插入令牌 使