csrf跨站请求伪造
csrf跨站请求伪造
强制终端客户在当前对其进行身份验证后的web应用程序上执行非本意的操作。
着重点在于伪造更改状态的请求,而不是盗取数据,因为攻击者无法查看对伪造消息的响应,如转移资金,更改受害者Ip地址等
重定向302->csrf
csrf是一种欺骗受害者提交恶意请求的攻击。
他继承者受害者的身份和特权,代表受害者执行非本意,恶意的行为.
对于大部分站点来说,浏览器请求自动发送与站点关联的所有凭证,例如用户的会话cookie,ip地址,windows域凭证等。
因此对于已对站点进行身份验证,服务器则无法区别受害者发送的伪造请求和合法请求
如一个受害者登录一网上银行网站,后又登录一钓鱼网站,表名为点击即送屠龙宝刀,但内含get或post的转账操作,导致代表受害者执行了非本意的转账操作且受害者毫无察觉。
csrf触发方式
1.<a href=''转账操作'>诱惑信息</a>
2.<img scr='http://172.16.132.161/bank/action.php?username=hacker&money=1000&submit=submit' 'alt=宝刀在手,天下我有'> get方式下
也可通过post表单方式
<from name='csrf' action='172.16.132.161/bank/action.php' method='post'>
<input type='hidden' name='username' value='hacker'>
<input type='hidden' name='money' value='1000'>
</form>
<script>document.csrf.submit()</script>//提交
也可配合xss存储形在留言板中插入xss与csrf联合攻击,添加管理员等一系列功能
对于csrf的防御
无效防御
1.使用秘密cookie
2.仅使用post请求
3.多步交易
4.url重写
5.https
虽然https不能抵抗csrf,但HTTPS应视为任何预防措施的先决条件。
有效防御
1.验证referer字段
但由于referer支持客户端自定义,不可完全相信
2.添加token验证
3.二次验证
4.用户养成良好习惯