Phoenix/Elixir:带有前端应用程序的 CSRF

Hel*_*rld 1 ajax file-upload elixir phoenix-framework nuxt.js

我在前端使用,API 服务器使用phoenix/elixir,反向代理使用 nginx。

当我尝试制作用于上传文件的表单时,我遇到了麻烦。我如何与csrf?

She*_*yar 5

使用 CSRF

CSRF 提供了很多安全优势,尤其是对于基于会话的 Web 应用程序,因此继续使用它可能对您有意义(如果您不使用诸如类的东西)。这在前端 SPA 中通常会变得有点复杂,但基本过程是:

  1. get_csrf_token/0在初始请求的网页上使用渲染 CSRF 令牌(通常在隐藏字段或 JS 变量中)

  2. X-CSRF-TOKEN在后续的调用中读取该值并将其发送回请求标头中的服务器

  3. 一段时间后在服务器上重新生成新的 CSRF 令牌,并将其发送回现有请求的响应标头中或仅用于令牌的专用请求的响应中

  4. 将其保存在您的 web 应用程序中以备下次非GET请求时使用

(假设您的 SPA 不是一个完全独立的前端项目,并且至少是部分服务器渲染的)


以下是一些其他资源: