如何使用Postman Rest Client获取和重用CSRF令牌

时间:2016-09-08 06:50:44

标签: web-services rest csrf postman csrf-protection

我正在使用Postman Rest客户端来访问其他服务。当我尝试从Postman客户端执行其余服务时,我收到以下错误。

contentMode

enter image description here

看来其余服务是通过CSRF令牌的实施来保护的。有没有人知道如何获取CSRF令牌并将其重用于将来的请求?

2 个答案:

答案 0 :(得分:3)

在应用程序中有几种方法可以防止CSRF。根据您的服务所具有的保护类型,您将不得不做一些稍微不同的事情,而且可能相对困难。

最着名的保护可能是using synchronizer tokens,在这种情况下,您必须首先下载页面,阅读令牌并在后续请求中将其传回,基本上模拟真实用户。由于同步器令牌是有状态的(需要以用户会话的形式提供服务器状态),并且您的用例是RESTful服务,我想这不是实现的方法。

另一种更适合服务的保护可以是double posting的某些变体。在这种情况下,根据实现情况,您可能必须发回与cookie和请求标头相同的标记值。

服务使用的另一种方法可能是encrypted tokens,从您的角度来看,它类似于同步器令牌(但是无状态)。

另一种(btw安全性较低)方法可能只是检查请求中的引用者和/或原始头。在这种情况下,您只需添加适当的请求标头。

我建议您在Windows上使用Fiddler之类的代理或Linux(或Windows)上ZAP Proxy之类的代理观察服务通常使用的方法,所需的标头值和Cookie名称等。然后,您可以以正确的方式提出自己的请求,并按照您的服务期望发送CSRF令牌。

最简单的方法是首先点击GET服务,以便我们可以获得响应以及CSRF令牌。我们可以在再次发送POST请求时使用该CSRF令牌。可以在POSTMAN客户端的响应的Body下找到CSRF令牌。

enter image description here

答案 1 :(得分:2)

1)在Chrome / Firefox中,通过右键单击任意位置打开控制台,然后选择“检查”(对于Chrome)或“检查元素”(对于Firefox)。

2)选择“网络”标签。 3)4) enter image description here

在看到请求时首先获取请求或登录,以从服务器发送CSRF-TOKEN。

5) 在下一个post请求中,使用上一个请求中的CSRF-TOKEN。

enter image description here