Safari的请求标头中无法发送带有HTTPOnly标志的cookie

时间:2018-08-08 09:40:57

标签: java security cookies browser safari

我使用Java在 Safari 浏览器中使用 HTTPOnly 标志创建了cookie 请参阅下面的响应标题。

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer:http://anil.mlbextrabases.com/SafariIssue/
User-Agent:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2
Query String Parametersview URL encoded
userName:servlet
userPass:servlet
flagRequired:true
Response Headersview source
Content-Length:331
Content-Type:text/html;charset=ISO-8859-1
Date:Wed, 08 Aug 2018 09:23:45 GMT
Server:Apache-Coyote/1.1
Set-Cookie:userInfo="username: servletpassword: servlet"; Version=1; Comment="creating cookie"; Domain=anil.mlbextrabases.com; Max-Age=31536000; Expires=Thu, 08-Aug-2019 09:23:45 GMT; Path=";Path=/;HttpOnly;", JSESSIONID=076942707A8D62AD1296102A1593F664; Path=/SafariIssue; HttpOnly
Strict-Transport-Security:max-age=7776000; includeSubdomains

但是浏览器中的后续请求未传递cookie。在传递其他浏览器(如 Chrome,Firefox,IE,Edge )时 当我删除 HTTPOnly 标志时,cookie在Safari浏览器中的传递也很好。

我在开发人员社区进行了很多研发工作。但这没有帮助。

1 个答案:

答案 0 :(得分:0)

HTTPOnly cookie 根据定义创建为不允许从 javascript 访问。 这是一种安全控制,可确保黑客无法通过提取有效的 cookie 值(如会话 ID)来利用您的软件

HttpOnly 是网站可以指定的关于 cookie 的标志。换句话说,网络服务器告诉您的浏览器“嘿,这是一个 cookie,您应该将其视为 HttpOnly”。

JavaScript 无法访问 HttpOnly Cookie。只有浏览器知道它,它不会将它提供给页面中的 JavaScript 代码。起初,这听起来像是一种限制,但确实如此。然而,这样做的目的是我们不能信任 JavaScript 代码。攻击者可能会使用 JavaScript 窃取我们存储在 cookie 中的身份验证令牌,然后使用我们的帐户访问该网站。使用 HttpOnly cookie,这是不可能的。这使得 XSS 攻击(我们刚刚描述的攻击)更难执行。

仅与 HttpOnly cookie 共享任何身份验证数据是公认的最佳做法。使用标准 cookie 进行身份验证是我们在任何情况下都应避免的已知漏洞。

https://www.ictshore.com/ict-basics/httponly-cookie/