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

时间:2016-02-18 11:34:49

标签: c#

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

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

由于

1 个答案:

答案 0 :(得分:0)

不是身份验证。它的安全性可以防止cross site request forgery

技术是:

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

在您的情况下,工作流程应该接近这个:

  1. 客户提出请求(tipicaly a HTTP GET)以查看其中的信息 屏幕。
  2. 响应HTML在生成的hidden field中有Form CSRF令牌。
  3. 单击具有以下数据的按钮时,客户端生成POST:文件标识他 想要下载和CSRF令牌。
  4. 服务器检查此令牌对此POST
  5. 是否有效
  6. 服务器将文件咬合发送到响应流。
  7. 所以,如果你想用C#以编程方式下载文件,我认为你应该首先GET,就像你是webBrowser一样;检索解析响应HTML的CSRF令牌,并发送POST文件和CSRF令牌。