网络:HTTP Cookie header 中set-cookie格式及安全secure httponly

Cookie相关的Http头:

    有两个Http头部和Cookie有关:Set-CookieCookie

    Set-Cookie由服务器发送,它包含在响应请求的头部中。它用于在客户端创建一个Cookie。

    Cookie头由客户端发送,包含在HTTP请求的头部中。注意,只有cookie的domain和path与请求的URL匹配才会发送这个cookie。

Set-Cookie Header:

   Set-Cookie: <name>=<value>[; <name>=<value>]...

                    [; expires=<date>][; domain=<domain_name>]

                    [; path=<some_path>][; secure][; httponly]

  expires=<date>: 设置cookie的有效期,如果cookie超过date所表示的日期时,cookie将失效。

                    如果没有设置这个选项,那么cookie将在浏览器关闭时失效。

                    注意:date是格林威治时间(GMT),使用如下格式表示:

     domain=<domain_name> : 

     path=<some_path>:

                    注:临时cookie(没有expires参数的cookie)不能带有domain选项。

                    当客户端发送一个http请求时,会将有效的cookie一起发送给服务器。

                    如果一个cookie的domain和path参数和URL匹配,那么这个cookie就是有效的。

                    一个URL中包含有domain和path,可以参考http://www.w3school.com.cn/html/html_url.asp
 

    secure   : 表示cookie只能被发送到http服务器。

    httponly : 表示cookie不能被客户端脚本获取到。

 

 

### 解决'Set-Cookie' Header Missing 'Secure' Directive 当设置Cookie时,确保安全性是一个重要的考虑因素。为了防止通过不安全连接传输敏感数据,在设置`Set-Cookie`头部时应始终包含`Secure`标志[^1]。 对于服务器端应用而言,可以通过修改响应头来添加此属性: ```http Set-Cookie: cookie_name=cookie_value; path=/; expires=expiration_date; HttpOnly; Secure ``` 上述配置不仅设置了必要的路径和过期时间,还启用了`HttpOnly`以及`Secure`标记,从而增强了安全性[^2]。 如果是在开发环境中遇到这个问题,则可能是因为当前环境未启用HTTPS协议。在这种情况下,建议先确认应用程序是否运行于TLS加密通道之上;如果不是的话,请调整部署方式以支持SSL/TLS证书安装和服务启动参数中的相应选项。 另外值得注意的是,除了`Secure`之外,还有其他几个推荐的安全措施可以进一步保护Cookies免受攻击风险影响,比如使用会话级Cookies、严格设定有效期、利用`SameSite`策略减少跨站点请求伪造的可能性等。 #### 配置示例 (Node.js Express) 在基于Express框架构建的应用程序中,可以通过中间件轻松实现这一点: ```javascript app.use((req, res, next) => { const oneDay = 86400; res.cookie('example', 'value', { httpOnly: true, secure: true, sameSite: 'strict', maxAge: oneDay * 1000 // 单位毫秒 }); next(); }); ``` 该代码片段展示了如何创建一个带有多个增强型属性的新Cookie,并将其附加到HTTP响应上发送给客户端浏览器处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值