今天看在看《XSS跨站脚本攻击剖析与防御》的时候,里边提到了CSRF与SSRF,在网络查询了这部分的资料后,简单总结了下二者的关系与不同
CSRF
又称跨站请求伪造,XSS就是CSRF中的一种。二者区别,XSS利用的是用户对指定网站的信任,CSRF利用是网站对用户浏览器的信任。
发生条件
当用户在安全网站A登录后保持登录的状态,并在此时浏览了保存有恶意代码的另一个网站B。此时B站劫持用户的浏览器并以用户以登录的状态对A站发送非用户本人的操作。
当服务端没有对这次请求验证的情况下,将这次操作作为可信任的用户的操作。
发生地点
攻击者可以将恶意网址或者代码藏在论坛博客等任何用户生成内容的网站中。这意味着如果服务端没有适合的防御措施的话,用户即使访问熟悉的可信网站也有受攻击的危险。
类似于XSS一些html标签可以发送HTTP GET类型请求 像<img>,浏览器渲染img标签的时候,并不知道标签中src属性的值,是否为一个图片,浏览器发起一个HTTP GET请求
,并携带当前受害者当前浏览器在网站的cookie,获取返回结果。
对于很多网站来说,即使是一些重要的操作使用POST来提交请求,但是服务器再接收请求的时候并没有严格区分POST和GET。在PHP中滥用$_REQUEST就是例子。
如果服务端已经区分了GET,POST只用POST请求数据,可以通过制造一个隐藏的表单,并通过js代码自动提交伪造的表单。
GET伪造