HttpOnly 标志–保护 Cookies 免受 XSS 攻击

HttpOnly是一种设置在cookie中的属性,防止JavaScript访问,降低XSS攻击风险。当HttpOnly标志启用时,浏览器不会允许通过JS读取cookie,从而保护会话信息不被恶意脚本窃取。此外,文章还提到了安全标志,用于确保cookie仅在HTTPS连接中传输,增加安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是HttpOnly?

        如果您在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,只能通过http方式获取cookie。

        如果支持HttpOnly的浏览器检测到包含HttpOnly标志的cookie,并且客户端脚本代码尝试读取该cookie,则浏览器将返回一个空字符串作为结果。这会通过阻止恶意代码(通常是XSS)将数据发送到攻击者的网站来使攻击失败。

跨站点脚本(XSS)攻击通常旨在窃取会话Cookie。

        在这种攻击中,cookie值由使用JavaScript (document.cookie)的客户端脚本访问。但是,在日常使用中,Web应用程序很少需要通过JavaScript访问cookie。因此,设计了一种防止cookie被盗的方法:一个告诉web浏览器只能通过HTTP访问cookie的标志——HttpOnly标志。

        该的HttpOnly标志不是新的。它最初于2002年在Microsoft Internet Explorer 6 SP1中实现,以防止敏感信息被盗。当前,每个主流浏览器都支持HttpOnly cookie。

HttpOnly如何工作?

        HttpOnly属性是Set-Cookie HTTP响应头的一个可选属性,在HTTP响应中,web服务器将该属性与web页面一起发送到web浏览器。下面是一个使用Set-Cookie头设置会话cookie的例子:

HTTP/2.0 200 OK Content-Type: text/html Set-Cookie: sessionid=QmFieWxvbiA1

        上面的会话cookie没有受到保护,可以在XSS攻击中被盗。但是,如果会话cookie设置如下,则可以防止使用JavaScript对其进行访问:

Set-Cookie: sessionid=QmFieWxvbiA1; HttpOnly

如何设置HttpOnly服务器端?

        所有现代的后端语言和环境都支持设置HttpOnly标志。这是一个如何使用setcookie函数在PHP中执行此操作的示例:

setcookie("sessionid", "QmFieWxvbiA1", ['httponly' => true]);

        最后一个值(true)表示设置HttpOnly属性。

安全Cookie的其他标志

        HttpOnly标志不是您可以用来保护cookie的唯一标志。这里还有两个有用的方法。

安全标志
        该安全标志被用于声明该cookie可能仅使用安全连接来发送(SSL / HTTPS)。如果设置了此cookie,那么如果连接是HTTP,浏览器将永远不会发送该cookie。该标志防止通过中间人攻击盗窃cookie 。

        请注意,只能在HTTPS连接期间设置此标志。如果是在HTTP连接期间设置的,则浏览器将忽略它。

        .....

参考文章:

HttpOnly 标志–保护 Cookies 免受 XSS 攻击 - 网安

https://www.cnblogs.com/softidea/p/6040260.html

HttpOnly是个什么鬼 - 简书

Cookie中HttpOnly的使用方式以及用途_cookie httponly_好事总会发生在下个转弯的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值