我正在使用Postman Rest客户端来访问其他服务。当我尝试从Postman客户端执行其余服务时,我收到以下错误。
contentMode
看来其余服务是通过CSRF令牌的实施来保护的。有没有人知道如何获取CSRF令牌并将其重用于将来的请求?
答案 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令牌。
答案 1 :(得分:2)