CSRF攻击方式及解决方法
2017-12-04 22:00
190 查看
场景一:网站表单数据提交没有任何验证,直接把表单数据插入数据库。
攻击:根据提交地址直接循环访问该地址,插入数据
场景二:网站表单数据提交开启了session验证,表单数据插入数据库。
攻击:通过广告或链接,获取用户当前浏览器cookie,伪造header头,访问目标网站
步骤2:处理表单程序进行验证(判断表单提交的隐藏的数据是否和session中的一致)
2 在页面增加csrf隐藏域避免站内失效
注意:若表单数据要插入数据库,别忘去掉接收数据中的_token项
查看
攻击:根据提交地址直接循环访问该地址,插入数据
<form action="http://xxx.com/laravel54/public/msg" method="post"> <p><input name="uname" type="text" value=""></p> <p><textarea name="content"></textarea></p> <p><input type="submit" value="提交"></p> </form>
场景二:网站表单数据提交开启了session验证,表单数据插入数据库。
攻击:通过广告或链接,获取用户当前浏览器cookie,伪造header头,访问目标网站
<?php //1.初始化(curl_http) $ch = curl_init(); //2.配置 //2.1设置请求地址 curl_setopt($ch, CURLOPT_URL, 'https://www.XXX.com/article/ajaxedit'); //2.2设置响应的数据流赋给变量而不是直接输出 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //2.3设置post请求 $postData = []; curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); //2.4伪造header头 $header = array('Cookie:xxxxxxxxx'); curl_setopt($ch,CURLOPT_HTTPHEADER,$header); //2.5https请求 不验证证书和hosts curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //3.发送请求 $data = curl_exec($ch); echo $data;die; //4.关闭请求 curl_close($ch); ?>
解决方式
步骤1:页面所有表单提交时候生成一个随机字符串保存在session中,并且在表单中隐藏该随机字符串。步骤2:处理表单程序进行验证(判断表单提交的隐藏的数据是否和session中的一致)
Laravel中避免CSRF攻击
1 开启csrf攻击:修改app\Http\Kernel.php中的\App\Http\Middleware\VerifyCsrfToken::class2 在页面增加csrf隐藏域避免站内失效
<input type="hidden" name="_token" value="{{ csrf_token() }}">
注意:若表单数据要插入数据库,别忘去掉接收数据中的_token项
查看
相关文章推荐
- IE浏览器用GET方式传递中文字符出现乱码问题的解决方法
- VC连接ADO方式ACCESS数据库在WIN7下编译到XP下不能运行解决方法
- 浅谈CSRF攻击方式
- Linux ssh(以及其他访问主机方式)登录变慢解决方法
- post方式提交request.getParamter();乱码解决方法
- CSRF攻击方式
- Android fragment 重叠问题—通过hide,show方式导致的解决方法
- ubuntu 14.04LTS快捷方式打开Sublime Text不能输入中文的解决方法
- (转)浅谈CSRF攻击方式
- SQLSERVER误删Windows登录用户验证方式使用Windows身份验证的解决方法
- 百度 地图 slidingmenu 黑边 使用截图的方式解决黑边问题,步骤: 1.slidingMenu打开的时候调用BaiduMap的snapshot方法截图获取Bitmap对象; 2.使用
- hibernate中一种导致a different object with the same identifier value was already associated with the session错误方式及解决方法
- Yii框架防止sql注入,xss攻击与csrf攻击的方法
- flex builder中运行方式中找不到web应用程序选项解决方法
- Linux 使用rpm方式安装最新mysql(5.7.16)步骤及常见问题解决方法
- 浅谈CSRF攻击方式
- SQL2008安装后激活方式以及提示评估期已过解决方法(转)
- 【安全牛学习笔记】CSRF跨站请求伪造攻击漏洞的原理及解决办法
- 用Jquery动态append方式加入标签时Css样式丢失的解决方法
- CentOS虚拟机NAT方式无法上网解决方法