最近在写php,项目写完后送检发现一个漏洞问题CSRF,强行拖了我一天的时间,沉迷解决问题,茶饭不思,日渐消瘦,时间比较赶,这篇比较糙,凑合看下。

好了废话不多说下面是今天的解决方案。

博主用的是Thinkphp框架,发现这个问题的时候第一件事就是去查下相关资料,发现发现网上说可以通过表单令牌来解决这个问题。

如果不设置表单令牌,很容易导致CSRF(跨站请求伪造)、跨站提交表单。

表单令牌是一种非常实用的技术(博主ps:其实鸡肋),它在表单的视图部分生成随机令牌,默认为随机的MD5串,存在hidden的input中。在表单数据提交前,将提交的数据与SESSION中存放的令牌进行比对,从而判断是否是跨站提交。

ThinkPHP中开启表单令牌的方式比较简单,在config中进行配置(博主的路径:项目/Home/Conf/config.php):

        'TOKEN_ON'=>true,  // 是否开启令牌验证
'TOKEN_NAME'=>'__hash__', // 令牌验证的表单隐藏字段名称
'TOKEN_TYPE'=>'md5', //令牌哈希验证规则 默认为MD5
'TOKEN_RESET'=>true, //令牌验证出错后是否重置令牌 默认为true

添加完成上面的代码后还需要在tags.php配置一波。ps:有的小伙伴没有tags.php可以在项目/Common/Conf目录下新建一个tags.php插入以下代码

<?php
return array(
//'配置项'=>'配置值'
'view_filter'=>array('Behavior\TokenBuildBehavior'),
);

然后你就可以在你的所有表单页面看到

<input type="hidden" name="__hash__" value="11f6b3285bf71a87811c3dadccb7b166_c6694a7c3a76bbf9ac7bf66a77d87310" />这个。

如果你只想在部分页面的表单加入表单令牌你可以:

C(‘TOKEN_ON’,false);

$this->display();

配置完成后在你的表单提交地址指向的方法里面加入下面代码:

if(!$Data->autoCheckToken($_POST)){
$this->error('非法登陆!');
}

上面的$Data是model

今天先写到这里要写代码了。

CSRF跨站点请求伪造漏洞问题的更多相关文章

  1. 密码学系列之:csrf跨站点请求伪造

    目录 简介 CSRF的特点 CSRF的历史 CSRF攻击的限制 CSRF攻击的防范 STP技术 Cookie-to-header token Double Submit Cookie SameSite ...

  2. Python Django框架笔记(四):数据分页和CSRF跨站点请求伪造

    (一)数据分页  可以参考  https://docs.djangoproject.com/en/2.0/topics/pagination/ 模板:如果只要显示 1.2.3.4.5.6....的话, ...

  3. CSRF跨站请求伪造漏洞分析

    CSRF 现在的网站都有利用CSRF令牌来防止CSRF,就是在请求包的字段加一个csrf的值,防止csrf,要想利用该漏洞,要和xss组合起来,利用xss获得该csrf值,在构造的请求中将csrf值加 ...

  4. csrf跨站点请求伪造

    什么是csrf(跨站请求伪造) 伪造请求的定义有很多种,我将不是用户本意发出的请求统称为伪造请求(在用户不知情的情况下执行某些操作)xss的通过用户对浏览器的信任造成的,csrf是通过服务器对浏览器的 ...

  5. python---xss(Cross Site Scripting)跨站脚本攻击和csrf(xsrf)跨站点请求伪造(Cross—Site Request Forgery)攻击

    xss跨站脚本攻击:恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的. 例如:某些论坛允许用户自由发言,而 ...

  6. Appscan漏洞之跨站点请求伪造(CSRF)

    公司前段时间使用了Fortify扫描项目代码,在修复完这些Fortify漏洞后,最近又启用了Appscan对项目代码进行漏洞扫描,同样也是安排了本人对这些漏洞进行修复.现在,针对修复过的Appscan ...

  7. 跨站点请求伪造(CSRF)

    一.前言 跨站点请求伪造(Cross-SiteRequest Forgeries, CSRF),是指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新,属于被动 ...

  8. 跨站点请求伪造(CSRF、XSRF)

    相关文章: 1. http://www.cnblogs.com/xiaoqian1993/p/5816085.html  深入解析跨站请求伪造漏洞:原理剖析 2 .http://blog.csdn.n ...

  9. 跨站点请求伪造(CSRF)学习

    一.CSRF介绍 伪造一个站点,在站点中伪造一个向其他站点的请求,在用户访问该站点时让用户执行 假设有如下URL能删除一篇文章: 攻击者在自己的域中构造一个页面: 内容为: 使用一个img标签,其地址 ...

随机推荐

  1. Socket原理

    一.Socket简介 Socket是进程通讯的一种方式,即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交换. 几个定义: (1)IP地址:即依照TCP/IP协议分配给本地主机的 ...

  2. 【Windows核心编程】Windows常见数据类型

    一,常见数据类型 WORD:               16位无符号整形数据 DWORD:             32位无符号整型数据(DWORD32) DWORD64:         64位无 ...

  3. 转:小心,apc可能导致php-fpm罢工!

    原文来自于:http://www.searchtb.com/2014/02/apc-lock-php-fpm.html 最近线上产品出现了502错误.一般出现502错误,都是php-fpm 进程处理请 ...

  4. A Statistical View of Deep Learning (IV): Recurrent Nets and Dynamical Systems

    A Statistical View of Deep Learning (IV): Recurrent Nets and Dynamical Systems Recurrent neural netw ...

  5. Unity OF 3DMax毛坯房制作标准

    Unity OF 3DMax毛坯房制作标准 1.模型 2.贴图 3.模型塌陷展UV 4.灯光 5.Radiosity 6.Render  To   Texture 7.烘焙 8.导出 1.模型回目录 ...

  6. VS2010中编写宏添加作者信息与函数注释

    这里所说的宏是指通过一系列键盘组合键和可以插入自定义内容.下面介绍怎么编写一个自己的宏: 1.在Visual Studio 2010中按Alt+F11打开宏IDE: 2.打开后选择添加模块: 3.在弹 ...

  7. 字符串(后缀数组):POJ 3415 Common Substrings

    Common Substrings   Description A substring of a string T is defined as: T(i, k)=TiTi+1...Ti+k-1, 1≤ ...

  8. 【图论】Codeforces 711D Directed Roads

    题目链接: http://codeforces.com/problemset/problem/711/D 题目大意: 给一张N个点N条有向边的图,边可以逆向.问任意逆向若干条边使得这张图无环的方案数( ...

  9. Happy Number——LeetCode

    Write an algorithm to determine if a number is "happy". A happy number is a number defined ...

  10. SRM 401(1-250pt, 1-500pt)

    DIV1 250pt 题意:给一个整数f,则这样的正整数整数数列称为好数列:数列元素a0 >= a1 >= a2...,且a0<= f, a1 <= f-1, a2 <= ...