我正在通过邮递员访问HTTP API从网站上获取一些数据。 这对我来说很好,但是从最近几天开始给我一个错误,即
无效的csrf令牌403
因此,当我使用chrome中的开发人员工具检查时,我转到网站的“网络”标签并检查API。
所以现在该站点还在标头字段中发送CSRF令牌。
所以我知道可以用来生成csrf令牌的API。
我还从API获取令牌,并像在原始站点中一样发送带有标头的令牌。
但是我想知道为什么每次API返回的无效的csrf令牌
是否可以通过邮递员发送CSRF令牌。因为据我所知,csrf令牌用于停止伪造请求。 该网站有一个带有csrf令牌隐藏字段的表单,提交表单时,浏览器从该隐藏字段中获取令牌,并像这样工作。
我想知道几件事:-
1)是否可以通过邮递员在标头字段中发送csrf令牌。 或者,我们必须通过浏览器登录该站点,然后才能获取 数据。
2)如何使用Postman从站点获取数据?
3)我是否需要使用一些无头浏览器来实现此目的?
4)在我发帖时,他们说我们需要设置 cookie中的csrf-token,然后我们可以从 Cookie并发送请求。
非常感谢您的帮助。
谢谢
答案 0 :(得分:0)
通常,CSRF令牌实现与会话绑定,因此请确保您使用的是同一会话。当您致电返回CSRF令牌时,将创建会话。
如果您的后端使用cookie进行会话实现,则可以使用Post man中的cookie拦截器来传递相同的会话cookie。
答案 1 :(得分:0)
- 是否可以通过邮递员在标头字段中发送csrf令牌?或者我们必须通过浏览器登录到站点,然后只有我们才能获取数据。
您可以从访问的网站获取CSRF令牌,但可以通过邮递员发送。在许多情况下,CSRF令牌不取决于网站登录,而仅取决于网站访问。
- 如何使用Postman从站点获取数据?
如果网站在响应标头中返回CSRF,则您可能会在Postman中使用它。
如果您需要其他数据-这取决于网站的回复...我认为只要CSRF或/和其他表格数据正确,您就可以获取数据。
- 我是否需要使用一些无头浏览器来实现这一目标?
最好使用浏览器自动化功能,因为浏览器可以管理所有会话数据,包括cookie,标头等。
- 在我发帖时,他们说我们需要在其中设置csrf令牌 cookie,然后我们可以从cookie中获取令牌并发送请求。
是的,服务器可能会在Cookie中以及作为单独的请求标头设置或要求CSRF。因此,在以下任何情况下都可能需要CSRF(取决于网站):
我建议您使用脚本语言与CSRF(或类似物)一起使用以进行数据提取。 example显示了如何在Python中进行操作。
如果站点每个请求/响应都更改CSRF ,则该示例将不起作用。