我在我的应用程序上使用 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/