我试图找到以下问题的答案。
csrfToken
cookie?csrfToken
的数组存在,或者在技术上有效?我附上了一个示例屏幕截图,展示了我看到的多个csrftoken
,以及各种cookie路径和到期时间(多租户和各种表单路径)。
相关的:
这里代币存储在cookie中。Cookies根据其范围(域和路径)和cookie名称是唯一的。
在这种情况下,所有cookie都具有相同的名称-csrfToken
,它们也具有相同的域-127.0.0.1
,但是每个cookie的路径是唯一的。因此,不同的范围(更具体地说,路径)允许具有多个cookie。
描述防止CSRF攻击的保护措施的最受引用和尊重的文档是OWASP跨站点请求防伪备忘单(GitHub Markdown变体)。
每个html" target="_blank">用户会话生成一个csrf令牌并将其存储在cookie中是最流行的方法。与会话关联使其在某种程度上不受cookie更改的影响。请注意,您应该使用其他方法(即双重提交cookie,并在请求正文中包含令牌)进行保护,因为cookie是根据请求自动发送的。
会话更改视图(登录/注销/密码更改)和其他重要且高安全性的视图(即转账)可以并且应该使用高级和/或附加技术(即用户交互)进行保护。
为什么返回多个csrf令牌?
后端行为的可能解释:这可能是试图向应用程序添加图形ql支持。它看起来也像是Graphql和rest的结合。
向/graphql
endpoint发出请求,该endpoint依次遍历所有其他rest apiendpoint,就好像将来可能向它们发出POST/PUT/PATCH
请求一样,每个endpoint/视图向响应添加自己的每个路径/每个表单
(甚至每个请求)csrftoken cookie。此外,使用这种方法,下一个请求可能不会发送到/graphql
endpoint,而是直接发送到RESTAPIendpoint/视图url之一。
使用Graphql,您将只有一个/Graphql
endpoint,所有请求都将向它发出。
此外,拥有多个csrf令牌(每个endpoint)也不会带来任何好处。
有关向django添加GraphQLAPI
的方法,请查看Graphene
如果您正在考虑将单独的前端应用程序与Django后端一起使用,那么您肯定应该查看Django cors头文件(并使用它)。
不要求只有一个令牌,但更常见的方法是在单个根路径上更新/刷新CSRF令牌cookie:/
。
这实际上取决于服务器如何解释每个令牌请求之后的潜在表单帖子。一种简单的方法是在设置cookie之前将新生成的令牌存储在用户的会话存储(内存或数据库中)。然后,当用户的表单帖子到达时,在服务器上再次比较这两者。
>
当每个HTTP GET请求(用令牌响应)指定自定义cookie路径时,浏览器会存储多个令牌cookie。更常见的方法是使用一个cookie来防止CSRF。
您可以使您的令牌路径特定,但这不会使您的令牌更安全。
测试令牌有效性完全取决于您。
希望这有帮助。
我尝试了上述命令的各种组合,但结果总是上面给出的错误消息。为什么会发生这样的事情--因为我是按照文档所说的去做的?
我试图从特定的Dockerfile构建镜像,并同时标记它;我遵循的在线说明,但我得到以下错误: “docker build”只需要1个参数 这是我运行的命令: 我尝试了上述命令的各种组合,但结果总是上面给出的错误消息。为什么会发生这种情况——因为我在遵循留档所说的?
原始关闭原因未解决 我只是想从另一个目录构建dockerfile,我尝试了以下命令 和 它们都产生相同的错误
我正在用JavaFX开发一个音乐库应用程序,我在如何正确使用MediaPlayer类方面遇到了一些问题。 这是我目前设置和播放音频文件的方法: 比如说,我有两个音频文件。。。 ...以及将这两个文件中的一个发送到上述方法的两个按钮: 通常,两个音频文件都会相互播放是有意义的,因为每次调用该方法时我都会创建一个新的MediaPlayer对象,但是,该对象是静态的。也许我误解了静态对象的工作原理,但这
现在有个需求要求我用nestjs写一个接口,处理本地一个json文件处理成一个html页面返回给前端 ,我想问比如返回的格式是这样,"text":'<style>.helloword{width:100px;}</style> <div class="helloword" (click)="handleclick()">你好</div>' 这样返回去的样式和点击事件是否能生效。如果不行该如何做?大
在Flink中,像“平面地图”、“地图”等运算符称为任务,如果我将平面地图的并行度设置为30,那么这个任务有30个子任务。 现在,如果我只有一个插槽,它会在一个插槽中产生多个线程吗?还是每个插槽只有一个线程? Flink会在该插槽中简单地创建30个线程,还是使用类似线程池的东西? 以上不是一个恰当的例子。 假设在作业中我有操作符flatMap和map,它们都有并行度1,我只有一个插槽,这个插槽会创