我们使用Java和GWT开发了一个Web应用程序,现在我们正在解决以下问题:
安全问题:
的Cookie:
从以上3个问题我们能够解决前2个问题但无法修复第3个问题,因为我们正在访问由客户端使用GWT(javascript)开发的服务器创建的cookie。所以我们认为,它不能为我们的应用程序修复或者它可以被忽略,因为我们修复了" X-Frame-Options"这不允许javascript注入我们的网站。
请给我关于上述问题的建议。
答案 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;
}-*/;
容易! :)