【问题标题】:Are cookies safe?饼干安全吗?
【发布时间】:2015-05-09 00:37:01
【问题描述】:

如果我的网页之前设置了一些 cookie,我想创建一个重定向用户的网页。像这样:(我使用的是 jquery cookie 插件)

// get cookies
var email = $.cookie("email_addr");
var postcode = $.cookie("post_code");

if(email != undefined && postcode != undefined) {
    // insert cookies into redirect url
    var redirect =
    "https://docs.google.com/forms/d/1BofVyLFj9-Y2RQ8LxZuaptS071yHDqW4cdZhvvqTNz8/viewform?entry.139029761=" + email +
    "&entry.1727046863=" + postcode;
    console.log(redirect);
}

(为了便于阅读,省略了 URL 字符替换)

我可以假设 cookie 是安全的,并且除了用户和应用程序之外的任何人都不能修改,所以 xss 攻击是不可能的,还是我需要验证它们?

我会在设置 cookie 时对其进行验证,我的问题是我是否可以信任自己的 cookie。

【问题讨论】:

    标签: javascript jquery cookies xss jquery-cookie


    【解决方案1】:

    您应该始终验证用户提供的数据并假设它可以被修改。它甚至可以不是由第三方修改,而是由恶意用户或有权访问合法用户浏览器的人修改。您还应该保护包含用户个人数据(电子邮件、密码、地址等)的 cookie 免受 XSS 攻击。一个好方法是使用HttpOnly flag。更好的方法是加密 cookie,这样只有您的应用程序知道它们的内容。这也将阻止 cookie 内容直接访问。

    重要正如@Eda190 在 cmets 中对以下答案所述,您不应只保护 cookie 免受 XSS 攻击,而应保护您的应用程序。这是一个很好的cheat sheet

    【讨论】:

    • 但是如果恶意用户编辑了他的cookie,那只会影响到他自己,对吧?那我为什么需要验证呢?
    • 它只会影响他,但如果攻击者找到一种方法将他的代码注入您的网站,他可以继续读取访问注入页面的每个用户的 cookie。
    • @joris_van_winden 可以直接访问合法用户浏览器的人可能会修改其 cookie。如果您的应用程序的正常运行依赖于存储在 cookie 中的数据,并且存在因修改该数据而损害您的应用程序的风险,您应该对其进行验证。
    【解决方案2】:

    没有。 Cookie 根本不安全,应该包含最少的数据,或者你应该用盐很好地加密它们。

    有一点要说,您发送给客户端的任何内容、POST、GET 或 Cookies。一切都可以修改。然而,cookie 的修改并不为许多人所知。大多数人会想到可食用的饼干。因此,如果您的数据不重要,可以根据需要使用 cookie。

    如果数据很重要,它是登录信息等,使用多个高度编码或更精确的散列。如果没关系,那么 cookie 就没有问题。

    【讨论】:

    • 这不是关于数据的安全性,而是关于 xss 漏洞
    猜你喜欢
    • 2015-06-06
    • 2013-07-04
    • 1970-01-01
    • 2010-09-15
    • 2016-03-21
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多