前端如何防止Cookie被劫持?

皇甫俊凤 阅读 4

我最近在用Vue做登录功能,后端返回的session cookie好像没加安全属性,担心会被XSS或者中间人攻击偷走。试过在axios里加withCredentials,但不知道前端能不能主动设置cookie的安全标志?

这是我的登录请求代码:

<script>
export default {
  methods: {
    async login() {
      const res = await this.$http.post('/api/login', {
        username: 'test',
        password: '123456'
      }, { withCredentials: true });
      // 后端Set-Cookie: sessionId=abc123; Path=/
      console.log('登录成功');
    }
  }
}
</script>

现在浏览器里的cookie既没有HttpOnly也没有Secure,是不是只能靠后端加?前端能做什么防护吗?

我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
Tr° 培珍
前端确实无法直接设置Cookie的安全标志,比如HttpOnly和Secure。这些标志需要在服务器端通过Set-Cookie头来设置。不过,前端可以采取一些措施来减少Cookie被劫持的风险。

首先,确保你在发送AJAX请求时设置了withCredentials: true,这样浏览器会携带Cookie进行跨域请求。你已经在代码中做了这一点,很好。

其次,考虑到XSS攻击的可能性,前端应该尽量避免将敏感信息存储在Cookie中,尤其是那些可以通过其他方式(如JWT)来管理的身份验证令牌。

虽然前端不能设置HttpOnly或Secure标志,但你可以通过Content Security Policy (CSP)来防御XSS攻击。设置一个严格的CSP可以帮助防止恶意脚本注入。标准写法是通过HTTP响应头添加CSP策略,但这通常也是由后端来配置的。

最后,确保你的应用使用HTTPS而不是HTTP,这样可以防止中间人攻击,并且可以安全地设置Secure标志让Cookie只通过HTTPS传输。

总结一下,前端虽然不能直接设置Cookie的安全属性,但可以通过避免存储敏感信息、防御XSS攻击以及确保使用HTTPS来增强安全性。最根本的措施还是在后端正确配置Cookie的属性。
点赞
2026-03-20 17:03