如何修复" Cookie集没有httpOnly" GWT中的安全问题

时间:2015-08-07 07:21:08

标签: java security cookies tomcat7 smartgwt

我们使用Java和GWT开发了一个Web应用程序,现在我们正在解决以下问题:

安全问题:

  1. X框-选项:
  2. X-XSS-保护:
  3. 的Cookie:

    1. HttpOnly and Secure
    2. 从以上3个问题我们能够解决前2个问题但无法修复第3个问题,因为我们正在访问由客户端使用GWT(javascript)开发的服务器创建的cookie。所以我们认为,它不能为我们的应用程序修复或者它可以被忽略,因为我们修复了" X-Frame-Options"这不允许javascript注入我们的网站。

      请给我关于上述问题的建议。

2 个答案:

答案 0 :(得分:0)

  

HttpOnly and Secure

您可以在Cookie上设置secure flag,您仍然可以通过JavaScript访问它们。请注意,使用GWT的整个应用程序都需要通过https访问才能生效。

如果您的应用程序要求通过JavaScript读取所有cookie,则无法设置http only标志。请注意,这仅对会话或身份验证cookie很重要 - 如果可以将这些设置为仅限http并将其他人设置为不带标志,那么这是可行的方法。

请注意,X-Frame-Options不再提供针对您网站的JavaScript注入的保护。 Same Origin Policy将此作为标准。 X-Frame-Options只会阻止您的网站加载到框架集或IFrame中以缓解clickjacking

答案 1 :(得分:0)

GWT Cookies.setCookie方法不支持HttpOnly。您可以根据需要创建自己的setCookie方法来进行设置。但是,您将无法从JavaScript中读取Cookie。

我需要将cookie值SameSite设置为Lax,因此只需创建以下方法:

public static native void setCookie(String name, String value, double expires, boolean secure) /*-{
    var c = name + '=' + value;
    if (expires)
        c += ';expires=' + (new Date(expires)).toGMTString();
    if (secure)
        c += ';secure;SameSite=Lax';
    $doc.cookie = c;
}-*/;

容易! :)