【问题标题】:How do you implement CSRF tokens in django rest framework?你如何在 django rest 框架中实现 CSRF 令牌?
【发布时间】:2021-05-20 14:25:37
【问题描述】:

我注意到,当使用 django 并且您发出发布请求时,例如使用表单,django 要求您添加 csrf 令牌,但是当我从使用 django rest 框架创建的 api 中获取数据时,我意识到当我没有发送 csrf 令牌时,应用程序没有任何错误。

在这个应用程序中,我正在使用带有 knox 的令牌身份验证,并且我看到了一些关于如何将 csrf 令牌与会话身份验证一起使用的帖子。

我的问题是令牌身份验证是否不需要 csrf 令牌,或者它们是否通过反应自动传递?提前致谢。

【问题讨论】:

    标签: reactjs django authentication csrf http-token-authentication


    【解决方案1】:

    @Diegoa87 - 你搞错了。

    CSRF 令牌是一个唯一的、秘密的、不可预测的值,由服务器端应用程序生成并以包含在客户端发出的后续 HTTP 请求中的方式传输到客户端。当发出后面的请求时,服务器端应用程序验证请求是否包含预期的令牌,如果令牌丢失或无效,则拒绝请求。 GET 请求不需要它。它不是一种对用户进行身份验证或授权的形式。它是一种验证请求的形式。添加 CSRF 令牌以防止 CSRF 攻击。还有一个叫做SSRF

    的东西

    基于令牌的身份验证 - 这与请求的类型无关。验证用户是否为合法用户。

    授权 - 这是为了确保被请求的用户有足够的权限来访问受保护的资源。

    我的问题是令牌身份验证是否不需要 csrf 令牌或者它们是否通过反应自动传递?提前致谢。

    据我所知,令牌是在标头中传递的,这是针对每个请求(GET、POST、PUT、DELETE)的。 Csrf 令牌以 HTML 形式添加,主要用于 POST、PUT、DELETE。可以改变服务器中资源状态的东西。 希望这是有道理的。

    我不是 React 专家,但没有什么是自动传递的。您必须在请求的标头中添加令牌。

    Csrf 令牌与请求绑定。

    令牌/JWT 令牌与发出请求的用户绑定。

    【讨论】:

    • 哦,好吧,那么 CSRF 是为了保护我的网站,它与身份验证无关。
    • @Diegoa87- 是的,Csrf 不是用户身份验证或授权的一种形式。它是一种验证请求是否有效的表单。
    猜你喜欢
    • 1970-01-01
    • 2015-02-02
    • 2017-10-02
    • 2015-03-05
    • 1970-01-01
    • 2013-01-28
    • 2023-03-29
    • 2020-07-16
    • 2021-08-03
    相关资源
    最近更新 更多