java.net默认的“系统范围”CookieHandler让我感到紧张,因为它意味着一个应用程序注册的cookie可以被另一个应用程序访问。如果这些cookie是授权令牌,这几乎与广播应用程序(和用户!)特定密码“系统范围”相同。
我有这个权利吗?如果我创建了导致cookie的HttpURLConnection
,那么另一个Java应用程序是否可以使用CookieHandler.getDefault.get(...)
来获取该cookie?各种文档(e.g.)指的是创建自定义的CookieHandler并设置默认的“系统范围”,但ambiguous or non-committal是关于后果的 - 所以虽然我可以创建自己的CookieHandler或CookieManager
,但似乎这不可避免地陷入了“系统范围的默认”,这可能是其他进程可以访问的。 Oracle“访问Cookie”教程(linked above)在促进“各种网页上的applet”的上下文中讨论了这一点,当它可能是一个功能时。但是,如果我在“系统”上有 HTTPS会话,如果其他进程可以获取我的(现在解密的)身份验证令牌,这似乎是一个可怕的安全漏洞。
总结:
Cookie是否通过Http(s)UrlConnection
然后在系统范围内实例化?
如果#1为真(我意识到我可以自己测试但没有),那么如何实现私有的每个应用程序cookie?
答案 0 :(得分:2)
Cookie是否通过Http(s)UrlConnection实例化,然后在系统范围内可用?
没有。它们与一个运行JVM的实例一样宽。 最常见的模型是每个应用程序都在自己的JVM中运行,因此它们不会以这种方式共享cookie。