Security 对于cookie,哪个更安全:\主机前缀还是设置域?

Security 对于cookie,哪个更安全:\主机前缀还是设置域?,security,cookies,https,header,domain-name,Security,Cookies,Https,Header,Domain Name,它们似乎都将cookie锁定到一个域,但它们不兼容(因为使用_主机前缀需要不设置域) 我还没有找到一个好的论据,哪一个更好。我意识到使用Domain属性有一些特性,比如允许子域使用cookie,这似乎是在主机上使用cookie的唯一原因 但是在所有条件都相同的情况下,假设没有子域,你能解释一下为什么一个子域比另一个更好吗?这是一种安全特性。如果你的网站是一个单一的静态页面(或没有子域等),这并不重要 对于具有更大攻击面的更高级应用程序,攻击者可能能够在您的子域上执行JS。例如,上传一些内容、XS

它们似乎都将cookie锁定到一个域,但它们不兼容(因为使用_主机前缀需要不设置域)

我还没有找到一个好的论据,哪一个更好。我意识到使用Domain属性有一些特性,比如允许子域使用cookie,这似乎是在主机上使用cookie的唯一原因


但是在所有条件都相同的情况下,假设没有子域,你能解释一下为什么一个子域比另一个更好吗?

这是一种安全特性。如果你的网站是一个单一的静态页面(或没有子域等),这并不重要

对于具有更大攻击面的更高级应用程序,攻击者可能能够在您的子域上执行JS。例如,上传一些内容、XSS或悬挂DNS


当您的应用程序服务器看到
\u Host-
前缀时,它可以确保cookie是在域上设置的,而不是在受损子域上设置的。

创建\u Host-前缀是为了解决与cookie相关的许多安全问题,并且应该始终在域属性上使用。将domain属性保留为空实际上更安全,因为这样您的cookie将只发送回设置cookie的主机。这在以下情况中称为仅主机标志:

如果域属性为[empty],则将cookie的仅主机标志设置为 对

__主机前缀还可以保护您的Cookie不被托管在域的不同子域上的网站覆盖。这是因为它们也受“仅主机”标志的约束

最后,未加密的连接使您的网站容易受到中间人攻击。__主机前缀通过不允许未加密的连接使用具有此前缀的cookie来解决此问题,从而阻止恶意第三方在用户从http重定向到https时注入与安全cookie同名的集cookie头

如果需要设置域或路径属性,但仍然需要_主机前缀提供的安全性,则可以使用_安全前缀。与_主机前缀一样,带有_安全前缀的cookie只能通过安全连接进行设置