reactjs - 是否安全地在客户端创建带有 token 的 cookie?

标签 reactjs express cookies graphql jwt

我在我的应用程序上使用 nextjs、graphql 和 JWT,我找不到一个好的逻辑来从服务器发送带有 token 的 cookie,所以我找到了另一个基于在客户端创建 cookie 的逻辑服务器将 token 发送给我。

不安全吗?在服务器上或在客户端上创建 cookie 是一种不好的做法还是有什么区别?我使用 HTTP cookie。

这是我创建 cookie 的客户端代码:

 const handleSubmit = async (e)=>{
    e.preventDefault();
    createUser({variables: {nombre, apellidos, email, password}}).then(res=>{
      console.log(res.data.register)
      cookies.set("token", res.data.register,{sameSite:'strict', expires: new Date(new Date().getTime() + 5 * 140000000), httpOnly: true})
    })

res.data.register中是服务器创建的token(JWT)

最佳答案

是的,这是不安全的。

您不能在客户端创建仅用于 HTTP 的 cookie。 HTTP-only 意味着没有脚本能够访问 cookie,但您已经使用脚本创建了该 cookie。事实上,浏览器不会让您在从脚本设置的 cookie 上设置 HTTP-only 标志。

您的服务器应该在响应中发送一个 Set-Cookie header ,这是应该设置 cookie 的地方,以及 HTTP-only 和 sameSite 参数。

关于reactjs - 是否安全地在客户端创建带有 token 的 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71664081/

相关文章:

reactjs - 如何使用react-input-mask( typescript )屏蔽formic中的 Material ui输入

javascript - 如何动态添加元素属性

node.js - 使用单个命令进行查询和插入

cookies - 从服务器到不同域中的 XHR 客户端的 Set-Cookie,将域设置为客户端的域,应该有效吗?

javascript - 停止从 React 中的输入传播事件

node.js - Express 中的路线链接

javascript - 制作和使用 NodeJS 的 soap 客户端同步

c# - MVC4 不在浏览器中保存 cookie

java - 带有 Cookie 的 Android MediaPlayer URL

javascript - 将未定义类型的不受控输入更改为受控