http-only的作用

httponly是微软对cookie做的扩展。这个主要是解决用户的cookie可能被盗用的问题。
    我们登陆某银行网站后,服务器会写一些cookie到我们的浏览器,当下次再访问其他页面时,由于浏览器回自动传递cookie,这样就实现了一次登陆就可以看到所有需要登陆后才能看到的内容。
也就是说,实质上,所有的登陆状态这些都是建立在cookie上的!假设我们登陆后的cookie被人获得,那就会有暴露个人信息的危险!
当然,想想,其他人怎么可以获得客户的cookie?那必然是有不怀好意的人的程序在浏览器里运行!如果是现在满天飞的流氓软件,那没有办法,httponly也不是用来解决这种情况的,它是用来解决浏览器里js访问cookie问题



php中设置httponly 


session.cookie_httponly = 1(or true)


Whether or not to add the httpOnly flag to the cookie, which makes it inaccessible to browser scripting languages such as JavaScript.
; http://php.net/session.cookie-httponly
session.cookie_httponly =


说明:http://php.net/manual/zh/session.configuration.php#ini.session.cookie-secure
session.cookie_httponly boolean
Marks the cookie as accessible only through the HTTP protocol. This means that the cookie won't be accessible by scripting languages, such as JavaScript. This setting can effectively help to reduce identity theft through XSS attacks (although it is not supported by all browsers).




Cookie操作函数setcookie函数和setrawcookie函数也专门添加了第7个参数来做为HttpOnly的选项,开启方法为: 
 ------------------------------------------------------- 
 setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE); 
 setrawcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE);
 ------------------------------------------------------- 
在thinkphp中可以通过配置,惯例文件 convention.php.中 
 'COOKIE_HTTPONLY'       =>  '',      // Cookie httponly设置









<think>好的,我现在要解释“HTTP Only”是什么。首先,用户之前问了DOM,现在转向HTTP Only,可能是在学习Web开发中的安全相关知识点。HTTP Only通常和Cookie有关,所以需要先回忆Cookie的基本概念。 用户可能已经知道Cookie是服务器发送到浏览器并保存的小数据,用于会话管理、个性化等。但HTTP Only是一个属性,设置后JavaScript无法读取该Cookie,这样可以防止XSS攻击窃取Cookie中的敏感信息,比如会话ID。 接下来要组织回答结构。先定义HTTP Only,然后说明它的作用,如何工作,和普通Cookie的区别,以及使用场景和注意事项。可能需要举例子,比如设置HTTP Only的Cookie在响应头中的样子,或者用代码示例说明。 需要确保用中文,术语准确,比如跨站脚本攻击(XSS)。同时,之前用户的问题回答格式用了分点、表格、代码块,这次也应该保持类似结构,清晰易懂。 还要注意用户可能的疑问点,比如设置了HTTP Only后,Cookie还能被篡改吗?这时候需要提到Secure属性和SameSite属性,作为补充的安全措施。另外,是否所有浏览器都支持?可能需要提到兼容性,但一般现代浏览器都支持。 最后,总结HTTP Only的重要性,强调它是Web安全的重要一环,结合其他措施提升安全性。确保回答真实可靠,结构清晰,帮助用户逐步理解。</think>### **HTTP Only 详解:保护 Cookie 的“安全锁”** **一句话理解**: HTTP Only 是 Cookie 的一个安全属性,设置后**禁止 JavaScript 访问该 Cookie**,主要用于防御 XSS(跨站脚本攻击)窃取敏感信息(如用户会话 ID)。 --- ### **一、HTTP Only作用原理** #### **1. Cookie 的基础角色** - **功能**:Cookie 是服务器发送到浏览器的一小段数据,用于记录用户状态(如登录凭证、购物车信息)。 - **安全隐患**:若 Cookie 被恶意 JavaScript 窃取,攻击者可冒充用户身份。 #### **2. HTTP Only 的防御机制** - **核心规则**:通过 `HttpOnly` 属性标记 Cookie,使其**仅能通过 HTTP 请求传输**,无法通过 `document.cookie` 读取或修改。 - **示例(响应头)**: ```http Set-Cookie: sessionID=abc123; HttpOnly; Secure; SameSite=Strict ``` --- ### **二、HTTP Only 的使用场景** | **场景** | **是否需要 HttpOnly** | **原因** | |-------------------------|-----------------------|---------------------------------------| | 会话 ID(Session ID) | ✅ 必选 | 防止 XSS 窃取会话凭证 | | 用户身份验证 Token | ✅ 必选 | 避免 Token 泄露导致账户被盗 | | 非敏感数据(如主题偏好)| ❌ 可选 | 无安全风险时可允许前端访问 | --- ### **三、HTTP Only 的代码示例** #### **1. 服务器端设置(Node.js/Express)** ```javascript res.cookie('sessionID', 'abc123', { httpOnly: true, // 禁止 JS 访问 secure: true, // 仅通过 HTTPS 传输 sameSite: 'Lax' // 防御 CSRF 攻击 }); ``` #### **2. 浏览器行为验证** - **尝试读取**: ```javascript console.log(document.cookie); // 输出:""(无法看到标记为 HttpOnly 的 Cookie) ``` --- ### **四、HTTP Only 的局限性** #### **1. 不防所有攻击** - **不能防御**: - **CSRF(跨站请求伪造)**:需配合 `SameSite` 属性或 CSRF Token。 - **中间人攻击**:需启用 `Secure` 属性强制 HTTPS。 #### **2. 无法彻底阻止 Cookie 被盗** - **其他途径**: - 网络嗅探(未启用 HTTPS 时)。 - 客户端恶意软件(如木马程序直接读取浏览器存储)。 --- ### **五、最佳实践** 1. **敏感 Cookie 必加 HttpOnly**:会话 ID、身份令牌等。 2. **配合其他安全属性**: - `Secure`:仅通过 HTTPS 传输。 - `SameSite`:限制跨站请求携带 Cookie。 3. **定期更新密钥**:降低 Cookie 泄露后的影响范围。 --- ### **六、生活化类比** - **普通 Cookie**:像放在透明玻璃罐里的钥匙(谁都能看到和拿走)。 - **HttpOnly Cookie**:钥匙被锁进保险箱,只有特定人员(浏览器)能用,但无法直接触碰。 - **XSS 攻击者**:即使潜入房间(网页),也无法打开保险箱偷走钥匙。 **HTTP Only 是 Web 安全的基石之一**,与 HTTPS、CSRF 防护等措施共同构建可靠防线 🔒。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值