(服务端)跨站请求伪造:Cross-Site Request Forgery
客户端请求伪造:Client-Side Request Forgery 即通过各种方式在客户端利用受害者的凭证发起请求
既然是前端安全就一定与浏览器有关.CSRF漏洞的本质是浏览器在不应该发送Cookie的地方发送了Cookie.
Cookie目前一共有8个属性,分别是
key—值
value—键
expires—Cookie的持续时间 有效时间
domain—Cookie的有效域名
path—哪些路径会携带Cookie
secure
cookie-secure的值改为true,true意味着"指示浏览器仅通过 HTTPS 连接传回 cookie。
这可以确保 cookie ID 是安全的,且仅用于使用 HTTPS 的网站。如果启用此功能,则
HTTP 上的会话 Cookie 将不再起作用。
httponly
设置HttpOnly=true的cookie不能被js获取到,无法用document.cookie打出
cookie的内容。
samesite—防止csrf的攻击
浏览器发送Cookie的策略很简单,只要本地缓存有Cookie,且目标URL符合Cookie的domain
,path
属性.则会发送.
浏览器不会验证是在哪里发起的请求.并且有个容易忽略的地方,same-site(同站)与same-origin(同源)是两个概念.对浏览器发送cookie来说只在乎same-site,也就是说,协议不同.端口不同或者domain配置错误的情况下子域名不同,也会发送cookie.
绝大多数Cookie的发送不受SOP(同源策略)限制,
XHR请求发送cookie受SOP限制.
最常用来触发CSRF的方式 当然是使用form
自动提交GET或POST请求
这种方式利用burpsuite的CSRF poc generator
快速生成
GET类型的CSRF来讲 还可以通过<img>
,<iframe>
,<link>
,<script>
等标签来触发 甚至可以用a
标签诱骗用