我在我的 Java EE 应用程序(客户端上的 jQuery)中使用了 cookie,并且在将安全性作为关键点的同时,我知道人们可以通过阅读文章来读取 cookie 并对其进行编辑。我真的很想从这些攻击中应用。
我在 SO 上阅读了如何在用户生成的 HTML 中防止 Javascript 注入攻击 ,但没有找到使我的 cookie 安全的解决方案。
我在我的 Java EE 应用程序(客户端上的 jQuery)中使用了 cookie,并且在将安全性作为关键点的同时,我知道人们可以通过阅读文章来读取 cookie 并对其进行编辑。我真的很想从这些攻击中应用。
我在 SO 上阅读了如何在用户生成的 HTML 中防止 Javascript 注入攻击 ,但没有找到使我的 cookie 安全的解决方案。
除非您的站点(或用户的系统)存在其他漏洞,否则第三方无法修改 cookie。
因此,您可以像对待来自客户端的任何其他数据一样对待它们(除了您不必担心 cookie 数据被CSRF 攻击伪造)。也就是说:信任 cookie 就像信任用户一样。
您可以为 cookie 设置几个标志来降低安全风险。
安全标志。它要求 cookie 只能通过 https 发送。这很重要,即使您的网站使用 https。为什么?假设银行网站强制最终用户使用 https。用户通过https连接银行网站,登录成功。银行网站通过 https 将 cookie 发送回用户浏览器。假设黑客可以嗅探网络并查看最终用户和银行站点之间的所有明文通信。显然,目前黑客无法看到任何东西,因为 cookie 是通过安全通道传输的。如果未设置 HttpOnly 标志,黑客可以执行以下操作
a) 黑客创建了一个网站 www.maliciouscode.com。
b) 他向最终用户发送带有链接的电子邮件,引诱最终用户访问该站点。
c) 用户上钩,通过另一个浏览器选项卡连接到http://www.maliciouscode.com站点。
d) 恶意站点通过http将用户浏览器重定向到银行站点。
e) 用户浏览器通过 HTTP 将 cookie 发送到银行站点。
f) 黑客拦截 cookie,因为它是以明文形式发送的,将其放在自己的浏览器中并以用户身份登录
HttpOnly标志。这个名字具有误导性。它不是安全标志的对立面。这意味着cookie只能由浏览器通过http(和https)协议使用,而不能通过JavaScript等其他方式使用。如果支持 HttpOnly 的浏览器检测到包含 HttpOnly 标志的 cookie,并且客户端脚本代码尝试读取 cookie,则浏览器将返回一个空字符串作为结果。这是为了防止 XSS 攻击。
Cookie 不安全。忘记保护他们。