阻止 CSRF 请求——SameSite 不工作
Prevent CSRF request -- SameSite not work
我在 tomcat 7.0.77 上使用 struts2 框架 运行。
在公共过滤器中,我使用以下代码添加了 SameSite cookie:
Cookie cookie = new Cookie("SameSite", "strict");
cookie.setMaxAge(-1);
res.addCookie(cookie);
我正在使用最新版本的 Chrome(版本 60.0.3112.90(官方构建)(64 位))来测试它是否可以避免 CSRF。
假设要保护的服务器是192.168.1.100。另一台服务器是 192.168.1.101 上的 运行,有一个非常简单的 test.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=
, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<a href="https://192.168.1.100/home.html">Click me!</a>
</body>
</html>
所以,我打开一个 Chrome 选项卡并登录 192.168.1.100。
然后我打开另一个 Chrome 选项卡访问 https://192.168.1.101/test.html 和
单击 "Click me!"。
我期望的是,当我单击此 "Click me!" 时,link 将我重定向到 https://192.168.1.100/home.html,但不应传递 cookie。所以我需要重新登录。
但实际情况是我仍处于登录状态并且所有 cookie 都已通过,我可以从 Chrome 开发人员工具中看到这一点。
真的很困惑我哪里错了,感谢您的帮助!
终于花了一整天时间弄明白了。
我们需要将 SameSite 理解为一个选项而不是一个键。
所以我们需要像这样设置一个cookie:
Cookie cookie = new Cookie("SomeKey", "SomeValue; SameSite=strict");
cookie.setMaxAge(-1);
res.addCookie(cookie);
我在 tomcat 7.0.77 上使用 struts2 框架 运行。 在公共过滤器中,我使用以下代码添加了 SameSite cookie:
Cookie cookie = new Cookie("SameSite", "strict");
cookie.setMaxAge(-1);
res.addCookie(cookie);
我正在使用最新版本的 Chrome(版本 60.0.3112.90(官方构建)(64 位))来测试它是否可以避免 CSRF。
假设要保护的服务器是192.168.1.100。另一台服务器是 192.168.1.101 上的 运行,有一个非常简单的 test.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=
, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<a href="https://192.168.1.100/home.html">Click me!</a>
</body>
</html>
所以,我打开一个 Chrome 选项卡并登录 192.168.1.100。
然后我打开另一个 Chrome 选项卡访问 https://192.168.1.101/test.html 和 单击 "Click me!"。
我期望的是,当我单击此 "Click me!" 时,link 将我重定向到 https://192.168.1.100/home.html,但不应传递 cookie。所以我需要重新登录。
但实际情况是我仍处于登录状态并且所有 cookie 都已通过,我可以从 Chrome 开发人员工具中看到这一点。
真的很困惑我哪里错了,感谢您的帮助!
终于花了一整天时间弄明白了。 我们需要将 SameSite 理解为一个选项而不是一个键。
所以我们需要像这样设置一个cookie:
Cookie cookie = new Cookie("SomeKey", "SomeValue; SameSite=strict");
cookie.setMaxAge(-1);
res.addCookie(cookie);