我有一个由自定义软件和 HTTP 服务器组成的系统。该软件将发送一些带有一些标头的请求,HTTP 服务器将发送回响应。
现在我有一些服务器将发送到软件的自定义身份验证相关标头,软件将保留这些标头并在每个额外的请求中将它们发送回以绕过身份验证过程。
根据我的理解,这应该使用 cookie 来完成。然而,在定制软件开发中,添加普通标头很容易,而添加 cookie 则更难实现,并且基于测试,使用普通标头在功能上也能正常工作。
我想知道的是,是否有任何安全原因和/或其他原因应该使用 cookie 而不是普通的 HTTP 自定义标头?
这更像是一个软件开发问题,可能会在 StackOverflow、软件工程或安全 SE 站点上吸引到更好的答案。
但最简单的答案是标头由客户端设置并且通常是静态的,例如在每个请求中包含特定的 API 令牌。
会话和 cookie 由服务器设置。后者为服务器提供了更多的控制权,并且可以说是更好的安全性。服务器可以在不使您进行身份验证的实际凭据失效的情况下使它们失效,从而使您重新进行身份验证(例如总是在 X 小时或一些空闲时间之后)或更改它们的值以防止会话劫持或重放攻击。