使用 c# 从网站获取 CSRF 令牌 ID
本文关键字:CSRF 令牌 ID 获取 网站 使用 | 更新日期: 2023-09-27 18:35:07
我遇到必须从网站下载文件的情况。它是一个安全站点(https),还需要客户端证书身份验证。
我有一个客户证书并设法进入。登录后,当我尝试下载文件时,我无法下载该文件。反过来,该文件包含带有csrftoken的html。如何获取此令牌 ID?为了下载文件,我需要这个令牌。有人可以分享这种身份验证,以及如何使用 c# 获取 csrf 令牌 ID。
谢谢
它不是身份验证。其安全性可防止跨站点请求伪造。
该技术是:
- 任何状态更改操作都需要一个安全的随机令牌(例如 CSRF令牌)以防止 CSRF 攻击。 每个用户
- 和每个用户会话的唯一
- 绑定到单个用户会话
- 较大的随机值
- 由加密安全的随机数生成器生成
- CSRF 令牌作为表单的隐藏字段或 URL 中的隐藏字段添加如果状态更改操作通过 GET 发生
- 如果 CSRF 令牌失败,服务器将拒绝请求的操作验证
在您的情况下,工作流应接近于此:
- 客户提出请求(特别是
HTTP GET
)以查看其中的信息屏幕。 - 响应 HTML 在生成的
Form
中具有hidden field
CSRF 代币。 - 客户端在单击具有以下数据的按钮时会
POST
: 文件标识想要下载和 CSRF 令牌。 - 服务器检查此令牌是否对此
POST
有效。 - 服务器将文件咬位发送到响应流。
所以,如果你想用C#以编程方式下载一个文件,我认为你应该先做一个GET
,就好像你是一个webBrowser一样;检索CSRF令牌解析响应的HTML,并发送一个POST
文件和CSRF令牌。