CSRF:(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,一般缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS很是不一样,XSS利用站点内的信任用户,而CSRF则经过假装成受信任用户的请求来利用受信任的网站。html
CSRF是借用用户的权限完成攻击,攻击者没有拿到受害者权限web
受害者必须在登陆状态下,而且点击了链接json
若是受害者不在登录状态,或者没有点击,则攻击不成功浏览器
(1)通常出如今对重要信息的修改(修改密码等),服务器
(2)post
测试环境DVWA,pikachu测试
通常是攻击者本身在网站建立帐号,修改要修改的信息,抓包,获得url网站
referer是什么东西呢???google
Referer 是 HTTP 请求header
的一部分,当浏览器(或者模拟浏览器行为)向web
服务器发送请求的时候,头信息里有包含 Referer 。好比我在www.google.com 里有一个www.baidu.com
连接,那么点击这个www.baidu.com
,它的header
信息里就有:url
Referer=http://www.google.com
由此能够看出来吧。它就是表示一个来源。
(2)http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=admin741&password_conf=admin741&Change=Change#
攻击者 只要把这个URL,内容修改一下,发给受害者,受害者点击后,就会把密码修改了,
post须要借助本身的站点,与XSS post相似
抓包post参数后,放到本身服务器站点的URL中,让受害者点击本身搭建的URL,本身的服务器,在向正常的服务器提交带有csrf payload的post请求,实现攻击
if($_GET['sex']!=null && $_GET['phonenum']!=null && $_GET['add']!=null && $_GET['email']!=null && $_GET['token']==$_SESSION['token'])
在每次提交的时候,都会生成一个必定长度而且随机的数跟在URL中,每次点击修改的时候会话中也会有Token,两个比较
CSRF漏洞,攻击成功条件比较多,因此不少人也不是很重视。看起来与XSS比较类似,可是存在本质差异,CSRF不须要得到用户权限,还有其余防护措施:验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证。