diff --git a/notes/pics/csrf.png b/notes/pics/csrf.png new file mode 100644 index 00000000..8ff486a2 Binary files /dev/null and b/notes/pics/csrf.png differ diff --git a/notes/攻击技术.md b/notes/攻击技术.md index b92735f6..9c56e27c 100644 --- a/notes/攻击技术.md +++ b/notes/攻击技术.md @@ -122,6 +122,8 @@ http://www.examplebank.com/withdraw?account=AccountName&amount=1000&for=PayeeNam 如果有账户名为 Alice 的用户访问了恶意站点,而之前刚访问过银行不久,登录信息尚未过期,那么就会损失 1000 美元。 +

+ 这种恶意的网址可以有很多种形式,藏身于网页中的许多地方。此外,攻击者也不需要控制放置恶意网址的网站。例如他可以将这种地址藏在论坛,博客等任何用户生成内容的网站中。这意味着如果服务器端没有合适的防御措施的话,用户即使访问熟悉的可信网站也有受攻击的危险。改为 POST 请求也不能解决问题,攻击者可以使用自动提交的表单。 通过例子能够看出,攻击者并不能通过 CSRF 攻击来直接获取用户的账户控制权,也不能直接窃取用户的任何信息。他们能做到的,是欺骗用户浏览器,让其以用户的名义执行操作。 diff --git a/tools/diagram/src/csrf.svg b/tools/diagram/src/csrf.svg new file mode 100644 index 00000000..2c61dbdb --- /dev/null +++ b/tools/diagram/src/csrf.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + CSRF 攻击过程 + + + + + + 用户浏览器 + + + 银行网站 + + + 恶意网站 + + ① 登录 + + Set-Cookie:会话 ID + + ② 访问恶意网站 + + 返回含 <img src="转账 URL"> 的页面 + + ③ 自动请求转账 URL,携带 Cookie + Cookie 有效,执行转账 +