CSRF令牌请求安全性



我公司正在维护的一个Drupal网站有一个REST端点,使用Drupal服务(可能没有那么相关)。我正在写的一个系统必须通过REST将系统中的更改写入该网站。要做到这一点,我们首先必须"登录"到系统,为此我们获得会话令牌和id,然后必须从同一网站获得CSRF令牌。要获得这个代币,我们必须向网站提出请求,提供我们之前获得的代币和id。之后,我们可以使用令牌和id,再结合CSRF令牌,来进行编辑请求。

但是,为什么必须首先请求这个CSRF令牌才能使这个系统更加安全呢?

这是CSRF令牌的一个奇怪用法,它们主要用于阻止第三方站点向站点表单端点提交表单数据。由于令牌是在呈现表单时发出的。然后,当用户POST时,它将检查令牌是否正确。它通过cookie来实现这一点。

但在您的情况下,它必须用于对REST调用进行身份验证,因为登录id在不同的会话中必须保持不变,因此嗅探它的人可能会用该id伪造调用。因此,使用令牌而不是每次传递登录密码(这是个坏主意)。

如果web客户端也使用REST API,则需要CSRF令牌来保护其免受CSRF的影响。

如前所述,这使得以服务器端的方式使用很麻烦。他们可以在后端引入一个标志来指示帐户是使用API服务器端还是客户端,并且只需要客户端使用令牌。

最新更新