我公司正在维护的Drupal网站有一个REST端点,使用Drupal Services(可能不相关)。我正在编写的系统之一必须通过REST将系统中的更改写入该网站。为此,我们首先必须“登录”系统,我们为此获取会话令牌和ID,然后必须从同一网站获取CSRF令牌。要获得此令牌,我们必须向网站发出请求,提供我们之前获得的令牌和ID。在此之后,我们可以使用令牌和id,结合CSRF令牌来发出编辑请求。
但为什么必须首先请求此CSRF令牌才能使此系统更安全?
答案 0 :(得分:1)
这是CSRF令牌的奇怪用法,它们主要用于阻止第三方站点将表单数据提交到站点表单端点。因为令牌在呈现表单时发出。然后,当用户POST时,它将检查令牌是否正确。它是通过cookie完成的。
但在你的情况下,它必须用于验证REST调用,因为登录ID必须在不同的会话中保持相同,因此有人嗅探这可能会伪造具有该id的调用。因此,每次使用令牌而不是传递登录密码(这将是一个坏主意)。
答案 1 :(得分:0)
如果Web客户端也使用REST API,则需要CSRF令牌来保护它免受CSRF的攻击。</ p>
如上所述,这使得以服务器端方式使用变得麻烦。他们可以在后端引入一个标志来指示帐户是使用API服务器端还是客户端,并且只需要令牌用于客户端使用。