【问题标题】:Can we get the data without submitting the form in case of CSRF Token via Postman如果 CSRF Token 通过 Postman 我们可以在不提交表单的情况下获取数据吗
【发布时间】:2019-01-02 11:15:04
【问题描述】:

我通过邮递员访问 HTTP API 从网站获取一些数据。 它对我来说工作正常,但从最近几天开始,它给了我一个错误,即

无效的 csrf 令牌 403

因此,当我通过 chrome 中的开发人员工具进行检查时。我转到网站的网络选项卡并检查 API。

所以现在网站也在头部字段中发送 CSRF-Token。

所以我知道生成 csrf 令牌的 API。

我还从 API 获取令牌,并像在原始站点中那样发送带有标头的令牌。

但我想知道为什么每次 API 都返回 invalid csrf token

是否可以通过邮递员发送 CSRF 令牌。因为据我所知,csrf 令牌用于停止伪造请求。 该站点有一个带有 csrf 令牌隐藏字段的表单,并且在提交表单时,浏览器从该隐藏字段获取令牌并像这样工作。

我想知道一些事情:-

1) 是否可以通过邮递员在标头字段中发送 csrf 令牌。 或者我们必须通过浏览器登录该站点,然后我们才能获得 数据。

2)如何使用 Postman 从站点获取数据?

3)我是否需要使用一些无头浏览器来实现这一点?

4)当我通过帖子时,他们说我们需要设置 csrf-token 在 cookie 中,然后我们可以从 cookie 并发送请求。

非常感谢任何帮助。

谢谢

【问题讨论】:

    标签: javascript api web-scraping postman csrf


    【解决方案1】:

    通常 CSRF 令牌实现与会话绑定,因此请确保您使用的是同一个会话。当您调用返回 CSRF 令牌时,将创建会话。

    如果您的后端使用 cookie 进行会话实现,您可以使用 Post man 中的 cookie 拦截器来传递相同的会话 cookie。

    【讨论】:

    • 感谢您的回复我在获取 CSRF 和通过 CSRF 获取数据时使用相同的会话。但是,它仍然给我一个无效 CSRF 令牌的错误。我通过邮递员在标头字段中发送令牌,例如:- CSRF-Token: cXEBdlsa-SHnQ2aCi2cIIyQ0yATr6xtxRO44
    【解决方案2】:
    1. 是否可以通过邮递员在标头字段中发送 csrf 令牌?或者我们必须通过浏览器登录网站才能获取数据。

    您可以从访问网站获取 CSRF 令牌,但通过 Postman 发送。 CSRF 令牌,在很多情况下,不依赖于网站登录,只依赖于站点访问。

    1. 如何使用 Postman 从站点获取数据?

    如果网站在响应标头中返回 CSRF,那么您可能会在 Postman 中使用它。

    如果您需要一些其他数据 - 这取决于网站的响应...我认为如果您的 CSRF 或/和其他表单数据正确,您将能够获得数据。

    1. 我是否需要使用一些无头浏览器来实现这一点?

    最好使用浏览器自动化,因为浏览器管理所有会话数据,包括 cookie、标头等。

    1. 当我通过一篇帖子时,他们说我们需要将 csrf-token 设置为 cookie,然后我们可以从 cookie 中获取令牌并发送请求。

    是的,CSRF 可能由服务器在 cookie 和单独的请求标头中设置或要求。因此,以下任何一项都可能需要 CSRF(取决于网站):

    • cookie 标头
    • 单独的标题
    • 表单域

    我建议您使用脚本语言来使用 CSRF(或类似物)来获取数据。 example 展示了如何在 Python 中执行此操作。

    注意

    如果站点随每个请求/响应更改 CSRF,则该示例将不起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-26
      • 2015-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 2016-12-05
      • 1970-01-01
      相关资源
      最近更新 更多