反 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? 的相关文章

  • ASP.NET Core 与现有的 IoC 容器和环境?

    我想运行ASP NET 核心网络堆栈以及MVC在已托管现有应用程序的 Windows 服务环境中 以便为其提供前端 该应用程序使用 Autofac 来处理 DI 问题 这很好 因为它已经有一个扩展Microsoft Extensions D
  • 无法解析远程名称 - webclient

    我面临这个错误 The remote name could not be resolved russgates85 001 site1 smarterasp net 当我请求使用 Web 客户端读取 html 内容时 出现错误 下面是我的代
  • 在 IIS URL 重写模块中自定义 HTTP 标头

    我被一个简单的出站规则困住了 我想修改HTTP内容类型 to 应用程序 原子 xml 如果 URL 完全匹配http wayneye com Feeds Atom http wayneye com Feeds Atom 我的规则 XML
  • ASP.NET Core 会话超时

    我记得我们在 ASP NET 中使用了 session timeout 来更改会话超时 如果不更改 则为 20 分钟 我尝试在 Startup cs 中更改 ASP NET Core 3 1 中的会话超时 但没有任何反应 我对操作员使用身份
  • 有没有办法阻止 iOS 上的 Safari 在关闭时清除网站的 cookie?

    我的移动网络应用程序的一位用户抱怨说 每次他关闭手机屏幕后使用该应用程序时 他都必须重新登录该应用程序 发生的情况是 当屏幕关闭时 或者当您通过双击主页按钮并滑开 Safari 来完全关闭 Safari 时 Safari 会清除该网站的 C
  • 使用 HtmlAgilityPack 解析 dl

    这是我尝试使用 ASP Net C 中的 Html Agility Pack 解析的示例 HTML div class content div dl dt b a href 1 html title 1 1 a b dt dd First
  • ASP.net C#.如何解析博客中的原子提要

    饲料位于 http latestpackagingnews blogspot com feeds posts default http latestpackagingnews blogspot com feeds posts default
  • 在 C# ASP.NET 中添加自定义 hashAlgorithmType

    我有一个页面需要加强安全性 我正在使用内置的 MembershipProvider 功能 目前有hashAlgorithmType设置为 SHA512 我有 BCrypt NET 库 http bcrypt codeplex com 当我从
  • 动态生成的控件 ID 返回为 NULL

    我可以在 Page PreInit 函数中创建动态控件 如何检索控件及其 ID 我的 C 代码用于创建动态控件之一 var btn new WebForms Button btn Text btn ID Addmore btn Click
  • 在 ASP.NET 3.5 中使用 ASMX 文件的 WS-Security

    基本上 我需要设置 ASMX 文件 以便当我在浏览器中将其拉出以显示 WebMethod 规范时 Soap 标头符合以下格式
  • 从 JavaScript 中的 OnClientClick 事件中阻止 C# 中的 asp:Button OnClick 事件?

    我有一个asp Button在我的网页上 它调用 JavaScript 函数和代码隐藏方法 后者进行调用以导航到另一个页面 在 JavaScript 函数中 我正在检查条件 如果不满足这个条件 我想中止导航 以便OnClick方法未被调用
  • Angular2 与 ASP.NET 5 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在将 Angular2 与 ASP NET5 gulp 和 typescript 结合使用 当我解决
  • idleTimeout 和 ShutdownTimeout 之间的区别

    我正在尝试放宽网站的会话过期策略 以便用户可以指定会话超时间隔 我需要弄清楚应该指定哪些网站相关设置 以免过多限制用户 例如 可能需要 1 天的间隔 我将使用门票来实现这一点 现在 我知道我可以在网站的 web config 文件中指定id
  • 如何禁用/覆盖内容页面控件 ID 的命名容器 ID 生成

    我们有一个现有的 ASP Net Web 应用程序 我们希望使用母版页将其转换为该应用程序 在执行此操作的过程中 我发现为 HTML 元素生成的 HTML id 以 ContentPlaceHolder 的 id 为前缀 这就是当我们设置
  • 多选复选框下拉

    我正在使用多选复选框下拉菜单 请看例子jsfiddle http jsfiddle net manthan11 qqhczbvs 6 function lstStates multiselect 选择州后 它会显示 TEXT 值并用逗号连接
  • 使用主题 css 文件需要页面上的标头控件。 (例如 )

    我正在开发 asp net 网络项目 当我运行该项目时 它工作正常 但在服务器中 我收到以下错误 如何解决这个问题呢 Using themed css files requires a header control on the page
  • 为什么在 C# 中使用 String.Concat()?

    我想知道这个问题有一段时间了 为什么使用String Concat 而不是使用 操作员 我明白了String Format因为它是一个空洞使用 运算符并使您的代码看起来更好 例如 string one bob string two jim
  • 如何在 iOS 上固定证书的公钥

    在提高我们正在开发的 iOS 应用程序的安全性时 我们发现需要对服务器的 SSL 证书 全部或部分 进行 PIN 操作以防止中间人攻击 尽管有多种方法可以做到这一点 但当您搜索此内容时 我只找到了固定整个证书的示例 这种做法会带来一个问题
  • Nhibernate:连接表并从其他表获取单列

    我有以下表格 create table Users Id uniqueidentifier primary key InfoId uniqueidentifier not null unique Password nvarchar 255
  • 将日期时间显示为 MM/dd/yyyy HH:mm 格式 C#

    在数据库中 日期时间以 MM dd yyyy HH mm ss 格式存储 但是 我想以 MM dd yyyy HH mm 格式显示日期时间 我通过使用 String Format 进行了尝试 txtCampaignStartDate Tex

随机推荐

  • 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 和会话状态中插入令牌 使