使用角度设置 Cookie 参数“HttpOnly”的任何想法

Posted

技术标签:

【中文标题】使用角度设置 Cookie 参数“HttpOnly”的任何想法【英文标题】:any idea to setup Cookie parameter 'HttpOnly' using angular 【发布时间】:2020-04-23 22:21:58 【问题描述】:

我试图使用 angular 设置 cookie 的参数。我可以设置到期日期和安全参数,但无法设置 HttpOnly 参数。 我已经使用 angular cookie 服务设置了“过期”和“安全”,即“cookie.service.d.ts”使用下面的方法

set(name: string, value: string, expires?: number | Date, path?: string, domain?: string, secure?: boolean, sameSite?: 'Lax' | 'Strict'): void;

我找不到如何设置 HttpOnly 参数,因为 Angular cookie 服务不包含这样的参数。 设置 HttpOnly 参数的任何最佳方式。

PFA..

【问题讨论】:

【参考方案1】:

HttpOnly cookie 上的标志意味着它只能由服务器端设置和访问。客户端代码将无法访问此类 cookie。因此,您将无法从客户端代码(如 angular)设置此标志。

这是一项安全功能,可防止客户端代码(通过 XSS 注入的恶意代码)读取存储在 cookie 中的敏感信息。

请参阅this issue 和this answer 了解更多信息。

下面还有来自MDN 的文本sn-p。 -

通过 javascript 创建的 Cookie 不能包含 HttpOnly 标志。

【讨论】:

很好的回应。但是,角度可以读取那个 cookie 吗?【参考方案2】:

HttpOnly cookie 无法从客户端访问,这意味着您将无法读取或设置它。

您可以使用常规 cookie 来存储您可以从后端生成的授权令牌,例如 JWT。

默认情况下,Angular 将所有值都视为不受信任。当从模板绑定或插值将值插入 DOM 时,Angular 会清理并转义 untrusted values。

【讨论】:

以上是关于使用角度设置 Cookie 参数“HttpOnly”的任何想法的主要内容,如果未能解决你的问题,请参考以下文章

最近机房让整改的漏洞 设置cookie httponly X-Frame-Options头未设置

在 codeigniter 中使用 HTTPOnly 标志设置 cookie

如何为cookie设置HttpOnly

通过 Javascript 将 cookie 设置为 HttpOnly

将会话 cookie 设置为 HttpOnly

用javascript能不能提取httponly属性的cookie