File tree Expand file tree Collapse file tree 1 file changed +2
-2
lines changed
docs/system-design/security Expand file tree Collapse file tree 1 file changed +2
-2
lines changed Original file line number Diff line number Diff line change @@ -178,7 +178,7 @@ Session-Cookie 方案在单体环境是一个非常好的身份认证方案。
178178
179179## 为什么 Cookie 无法防止 CSRF 攻击,而 Token 可以?
180180
181- ** CSRF(Cross Site Request Forgery)** 一般被翻译为 ** 跨站请求伪造** 。那么什么是 ** 跨站请求伪造** 呢?说简单用你的身份去发送一些对你不友好的请求 。举个简单的例子:
181+ ** CSRF(Cross Site Request Forgery)** 一般被翻译为 ** 跨站请求伪造** 。那么什么是 ** 跨站请求伪造** 呢?说简单点,就是用你的身份去发送一些对你不友好的请求 。举个简单的例子:
182182
183183小壮登录了某网上银行,他来到了网上银行的帖子区,看到一个帖子下面有一个链接写着“科学理财,年盈利率过万”,小壮好奇的点开了这个链接,结果发现自己的账户少了 10000 元。这是这么回事呢?原来黑客在链接中藏了一个请求,这个请求直接利用小壮的身份给银行发送了一个转账请求,也就是通过你的 Cookie 向银行发出请求。
184184
@@ -190,7 +190,7 @@ Session-Cookie 方案在单体环境是一个非常好的身份认证方案。
190190
191191` Session ` 认证中 ` Cookie ` 中的 ` SessionId ` 是由浏览器发送到服务端的,借助这个特性,攻击者就可以通过让用户误点攻击链接,达到攻击效果。
192192
193- 但是,我们使用 ` Token ` 的话就不会存在这个问题,在我们登录成功获得 ` Token ` 之后,一般会选择存放在 ` localStorage ` (浏览器本地存储)中。然后我们在前端通过某些方式会给每个发到后端的请求加上这个 ` Token ` ,这样就不会出现 CSRF 漏洞的问题。因为,即使有个你点击了非法链接发送了请求到服务端 ,这个非法请求是不会携带 ` Token ` 的,所以这个请求将是非法的。
193+ 但是,我们使用 ` Token ` 的话就不会存在这个问题,在我们登录成功获得 ` Token ` 之后,一般会选择存放在 ` localStorage ` (浏览器本地存储)中。然后我们在前端通过某些方式会给每个发到后端的请求加上这个 ` Token ` ,这样就不会出现 CSRF 漏洞的问题。因为,即使你点击了非法链接发送了请求到服务端 ,这个非法请求是不会携带 ` Token ` 的,所以这个请求将是非法的。
194194
195195![ ] ( https://oss.javaguide.cn/github/javaguide/system-design/security/20210615161108272.png )
196196
You can’t perform that action at this time.
0 commit comments