首先,我是菜鸡,怀着学习的心态提问
xss 攻击者可以利用脚本读取浏览器的 cookie 信息发送到自己的服务器,然后加以利用,这一过程都是在用户登录的网站完成的,可以理解。
但是 csrf 攻击,是诱导已登录的用户点击钓鱼网站,这个过程已经不是同源的了,域名都不一样了,浏览器不会携带网站 A 的 cookie 信息到钓鱼网站 B ,那好像这也并不能构成信心泄漏,大佬解答一下
1
thinkershare 2023-08-31 18:20:20 +08:00
我可以诱导你去访问我的网站,然后在我的网站发送一个请求你的网站的一个 GET&POST 请求,这个请求携带的是请求 URL 所在 origin 的 Cookie, 这个过程就是请求伪造。用户被欺骗用他自己的真实身份做了他不知道的事情。
|
2
lrwlf 2023-08-31 18:59:59 +08:00
钓鱼网站 B 可以直接跳转到 A 网站的某个接口地址,或者通过 iframe 加载 A 网站的接口,这样构造的 GET 请求可以携带 cookie
|
3
SilentRhythm 2023-08-31 19:01:59 +08:00
银行 A 网站,骗子 B 网站,浏览器有 A 网站的 cookie
|
4
SilentRhythm 2023-08-31 19:02:09 +08:00
|
5
SilentRhythm 2023-08-31 19:03:21 +08:00
点错了,续上
在 B 网站的页面上发起了对 A 网站的请求,如果 A 网站没有校验,是能通过的 |
6
8355 2023-08-31 19:18:55 +08:00
是由钓鱼网站 B 带有恶意代码跳转回 A 网站的指定路径通过参数传递+浏览器自动获取本地 cookie 完成鉴权达成目的。
|
7
wonderfulcxm 2023-08-31 19:20:53 +08:00 via iPhone
它最终目标 URL 还是 A ,比如从 B 提交一个表单到 A 的 URL ,如果没有限制,就会带上 A 的 cookie 。因为访问 A 网站就会带上 A 的 cookie 。
|
8
wangxiaoaer 2023-08-31 19:25:54 +08:00
csrf 不是偷 cookie ,目标不是钓鱼网站,而是用户已经登陆的网站,用来偷偷模拟操作,这个操作可能很危险。
|
9
GeruzoniAnsasu 2023-08-31 19:36:27 +08:00
哪有那么抽象,早年微博和贴吧的漏洞见过没,点进一个不正常的「病毒帖」后你会自动地在所有已关注的贴吧里都发一份一样的病毒帖子。
这个就是 CSRF. 只是伪造的用户行为是发帖。如果伪造上传下载文件或者修改什么私有资源的权限之类的行为,那破坏力能大得多。 |
10
wudiiiii 2023-08-31 19:55:35 +08:00
关于浏览器安全,只要记着:
1. 本网站存储的信息恶意网站不能读写。(同源策略) 2. 恶意网站能够构造和发送任意参数的请求,而且 cookie 会自动携带。 CORS 策略只限制了跨域请求不能接收响应,但是请求还是可以发出去。 |
11
lybcyd 2023-08-31 20:23:20 +08:00
例如 B 网站的一个伪造表单:
<form action="http://www.a.com/deleteAccount" method="post></form> 这个表单本身不违反同源策略,可以在用户不知道的情况下,通过用户已有的 cookie 进行一些很危险的操作。 为了防止类似的提交,通常的做法就是加上一个额外的隐藏 token 并进行校验,伪造的表单是无法获取到隐藏 token 的。像 Spring Security 这种框架一般都默认实现了 csrf token 。 |
12
xiaoxiaoming01 2023-08-31 21:25:47 +08:00 via Android
在站点 B 调用站点 A 的同源接口时,
它默认不会带站点 B 的 cookie , 但是会带站点 A 的 cookie 。 |
13
xiaoxiaoming01 2023-08-31 21:35:11 +08:00 via Android
假设有站点 C ,它使用的接口 d 与它不同源,
那么在站点 C 调用 d 接口时默认不带 cookie , 如果你后来又部署了一个站点 D ,站点 D 与接口 d 同源, 那么,此时在站点 C 调用接口 d 时,它会默认带 D 站点的 cookie 。 |
14
mdn 2023-08-31 22:34:42 +08:00
xss 是 盗用 用户 cookie
csrf 是 冒用 用户 cookie xhr 和 fetch 不能随意跨站请求资源,需要通过 CORS 策略来支持其跨域,但是 页面中可以引用任意第三方资源,比如 1. <img src="https://www.example.com/deleteAccount"> , 2. <form action="https://www.example.com/deleteAccount" method=POST> <input type="hidden" name="account" value="admin" /> <input type="submit" value="抢红包" /> </form> 3. <a href="https://www.example.com/deleteAccount" taget="_blank">抢红包<a/> 用户只要登录过 example.com 网站,在第三方网站触发上面任意一种,都会被恶意删除账号 |
15
lalalaqwer 2023-08-31 23:06:53 +08:00
@wudiiiii
CORS 只是简单请求能发不一定能接收,非简单请求是浏览器直接拦截发不出去的 |
16
ksc010 2023-08-31 23:28:34 +08:00
你应该是 CSRF XSS 闹混了
|
17
flyqie 2023-09-01 01:06:32 +08:00 via Android
csrf 攻击造成数据泄露一般不是 csrf 自身造成的,或者说 csrf 攻击本身造不成数据泄露。
不要拿 xss 攻击套 csrf 攻击,他俩效果不一样,csrf 攻击本身是啥情况前几楼举的例子已经很清楚了。 |
18
shermie OP 谢谢大佬们 现在是明白了
|
19
euronx 2023-09-01 10:58:58 +08:00
另外现在有 same site cookie 限制了
|