作者ericj (lalala)
看板NetSecurity
标题Re: [闲聊] 2017.W09 - CSRF 的攻与受
时间Tue Feb 28 17:30:46 2017
这篇也有 SameSite cookie
的一些参考资料:
https://scotthelme.co.uk/csrf-is-dead/
虽然目前只有 Chrome 有 support....
http://caniuse.com/#search=SameSite
不过文章里的里面提到的不同 cookie type 的设计也不错...
有关 CSRF 的说明也很简明扼要。
※ 引述《CMJ0121 (请多指教!!)》之铭言:
: ## 内容 ##
: CSRF (Cross-Site Request Forgery)[0],中文称之为跨站请求伪造
: 是一种伪造使用者操作的攻击手法
: 因为攻击形式又被叫做 one-click attack [1]
: 攻击的方式 利用伪造使用者正常的请求 (HTTP Request) 而达到攻击的目的
: 一般来说透过浏览器的请求 都用 HTTP[2] 的 GET、POST 等请求来完成
: 除了一些些特例之外
: 网站的设计者 对於某些敏感的操作 (e.g. 删除、汇款) 都会验证身份
: 这里的验证身份 在食物上都会用 session 来确认使用者是已经登入的帐号
: (题外话 有兴趣的人记得要了解 Cookie 与 Session 的差别)
: 因为 Browser 的特性 会将可以使用的 cookie 一并包含在 HTTP 请求当中
: 攻击者就用这个特性来做到 one-click attack 的攻击
: 可以参考此文章[3] 的情境 发现攻击者可以利用以下方式来发送 CSRF:
: 1. 一个图文不符的假 Link (<a>、<img> 等)
: 2. 你看不到的 iframe
: 3. JavaScript 自动帮你 Submit 一个 POST 请求
: ## 防御方式 ##
: 一个好的网站设计者 会提供一个 CSRF Token 或者 state token
: 来确定这次的 HTTP 请求真的是 user 当下 送出的
: Token 可以根据实作上的方式 分为绑定 session 或者是每次都不一样
: 前者可以防御 CSRF 的攻击 而後者则可以防御重放攻击 (Reply Attack)[4]
: 重放攻击是重复执行上一次使用者合法的操作
: 像是 Alice 汇款给 Bob
: Bob 就可以利用 Reply Attack 让 Alice 一直汇 一直汇 一直汇...
: 另一种则是 Chrome 最新提出来的 SameSite Cookie[5]
: 也就是 Browser 只会在 Host 跟请求网站一致的时候 才会将 Cookie 包含在请求当中
: 透过这种方式 就可以完全避免掉 CSRF
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.43.96.40
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/NetSecurity/M.1488274250.A.0C6.html
1F:→ CMJ0121: 感谢大大补充 (感动QQ) 03/01 16:39