使用 c# 从网站获取 CSRF 令牌 ID

本文关键字:CSRF 令牌 ID 获取 网站 使用 | 更新日期: 2023-09-27 18:35:07

我遇到必须从网站下载文件的情况。它是一个安全站点(https),还需要客户端证书身份验证。

我有一个客户证书并设法进入。登录后,当我尝试下载文件时,我无法下载该文件。反过来,该文件包含带有csrftoken的html。如何获取此令牌 ID?为了下载文件,我需要这个令牌。有人可以分享这种身份验证,以及如何使用 c# 获取 csrf 令牌 ID。

谢谢

使用 c# 从网站获取 CSRF 令牌 ID

它不是身份验证。其安全性可防止跨站点请求伪造。

该技术是:

  • 任何状态更改操作都需要一个安全的随机令牌(例如 CSRF令牌)以防止 CSRF 攻击。
  • 每个用户
  • 和每个用户会话的唯一
  • 绑定到单个用户会话
  • 较大的随机值
  • 由加密安全的随机数生成器生成
  • CSRF 令牌作为表单的隐藏字段或 URL 中的隐藏字段添加如果状态更改操作通过 GET 发生
  • 如果 CSRF 令牌失败,服务器将拒绝请求的操作验证

在您的情况下,工作流应接近于此:

  1. 客户提出请求(特别是HTTP GET)以查看其中的信息屏幕。
  2. 响应 HTML 在生成的Form中具有hidden fieldCSRF 代币。
  3. 客户端在单击具有以下数据的按钮时会POST: 文件标识想要下载和 CSRF 令牌。
  4. 服务器检查此令牌是否对此POST有效。
  5. 服务器将文件咬位发送到响应流。

所以,如果你想用C#以编程方式下载一个文件,我认为你应该先做一个GET,就好像你是一个webBrowser一样;检索CSRF令牌解析响应的HTML,并发送一个POST文件和CSRF令牌。