【问题标题】:Reading cross domain cookie读取跨域cookie
【发布时间】:2014-06-25 21:22:11
【问题描述】:

javascript/JSF 可以从不同的域读取 cookie 吗?

如果我在一个域中设置 cookie,请说 www.domain1.com。我可以从不同的域 www.domain2.com 读取该 cookie 吗?

如果是,怎么做?

我尝试了下面的代码,但它没有从提到的 URL 中读取 cookie 值,即http://host.example.com

public void getCookieUsingCookieHandler() { 
try {       
    // Instantiate CookieManager;
    // make sure to set CookiePolicy
    CookieManager manager = new CookieManager();
    manager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
    CookieHandler.setDefault(manager);

    // get content from URLConnection;
    // cookies are set by web site
    URL url = new URL("http://host.example.com");
    URLConnection connection = url.openConnection();
    connection.getContent();

    // get cookies from underlying
    // CookieStore
    CookieStore cookieJar =  manager.getCookieStore();
    List <HttpCookie> cookies =
        cookieJar.getCookies();
    for (HttpCookie cookie: cookies) {
      System.out.println("CookieHandler retrieved cookie: " + cookie);
    }
} catch(Exception e) {
    System.out.println("Unable to get cookie using CookieHandler");
    e.printStackTrace();
}

}

【问题讨论】:

  • 这对您来说安全吗?您希望他们阅读您的电子邮件/银行的 cookie 吗?您的代码将从服务器会话而不是客户端读取 cookie。
  • 是的。从另一个域读取 cookie 对我来说是安全的。

标签: java javascript jsf-2


【解决方案1】:

这是完全不安全且不可能的。 epascarello 击中了它的头部。如果您可以从任何域读取 cookie,那么您将能够从碰巧打开您网页的用户那里窃取会话 cookie。

【讨论】:

  • 有没有其他方法可以验证 cookie 是否已在另一个域中设置?
  • 没有。有一个警告......可以在同一域的子域之间共享 cookie。例如 com.yoursite.domain1 可以将 cookie 限定为 com.yoursite,然后 com.yoursite.domain2 可以访问这些 cookie,反之亦然。
猜你喜欢
  • 2012-01-19
  • 2011-01-20
  • 1970-01-01
  • 2020-05-27
  • 2014-03-13
  • 2016-02-03
  • 2012-02-24
  • 2011-08-06
相关资源
最近更新 更多