文档章节

CodeIgniter中使用CSRF TOKEN的一个坑

huangjacky
 huangjacky
发布于 2014/10/12 12:21
字数 453
阅读 103
收藏 0

事情的经过是这样的,一个自动化扫描工具说我的代码中存在XSS漏洞,什么是XSS不懂的朋友可以看这里

我的代码里面开启CodeIgniter框架的CSRF Token,如下:

NewImage

很简单,更多详情参考CI官方文档,主要用法就是在form_open时候自动插入一个隐藏的token值,当然还可以直接用php echo security->csrf_hash来配合其他一些用法,这里不多说。

接下来说说我的代码,Controller中代码如下:

NewImage

视图层代码这里页写得比较简单:

NewImage

代码中只是生成一个form里面带有token用于页面和服务器之间进行交流的。

代码介绍完了,接下来就来看自动化工具认为存在xss的地方。

NewImage

自动化工具是通过这两处来判断的。因此我们查看form_open的源码:

NewImage

可以看到,当form_open函数的action为空的时候,form的action会默认取当前的url。

如果当前的url有“岂不是可以截断html从而造成xss了,带着这样想法,我们来构造一下:

NewImage

默认是会被ci框架拦截的,因为存在非法字符,这个字符定义是在config.php中:

NewImage

有些时候url出现中文本拦截也是因为这个配置。

大致运行的流程如下:

NewImage         index.php

NewImage                    CodeIgniter.php

NewImage            Router.php

NewImage            URI.php

NewImage            URI.php

从上的例子可以看到,如果form_open空参数的可能带来一定的安全问题,但是默认情况下CI是拦截这些非法字符的,因此不会造成威胁。但是为了安全我们应该养成好的习惯,form_open必须有非空的action参数,就算这个form表单你不会使用。

本文转载自:http://www.cnblogs.com/huangjacky/p/3886710.html

共有 人打赏支持
huangjacky
粉丝 5
博文 19
码字总数 0
作品 0
深圳
高级程序员
私信 提问
CodeIgniter 3.0.1 RC 发布,PHP 的 MVC 框架

CodeIgniter 3.0.1 RC 发布,现已提供下载:https://github.com/bcit-ci/CodeIgniter/archive/3.0.1rc.zip。 CodeIgniter 是一个简单快速的PHP MVC 框架。EllisLab 的工作人员发布了 CodeIg...

oschina
2015/07/27
1K
13
CodeIgniter 3.0 将会使用 MIT 许可证发布!

CodeIgniter 3.0 RC3 发布,此版本现已提供下载:https://github.com/bcit-ci/CodeIgniter/archive/3.0rc3.zip。 同时,CodeIgniter 宣布 CodeIgniter 3.0 将会使用 MIT 许可证发布! CodeIg......

oschina
2015/03/11
1K
10
CodeIgniter 3.0 RC 发布,PHP 的 MVC 框架

CodeIgniter 3.0 RC 发布,此版本现已提供下载(ZIP)。详细更新内容请看这里:https://github.com/bcit-ci/CodeIgniter/blob/develop/user_guide_src/source/changelog.rst。 前几天还发布了...

愤怒的小兔
2015/01/27
5.8K
58
CodeIgniter 2.2.6/3.0.3 发布,PHP 的 MVC 框架

CodeIgniter 2.2.6 发布,此版本是安全更新版本: Fixed an XSS attack vector in Security Library method xss_clean(). Changed Config Library method base_url() to fallback to ``$_SER......

oschina
2015/11/02
1K
9
CodeIgniter 2.2.2 发布,PHP MVC 框架

CodeIgniter 2.2.2 发布,此版本现已提供下载:https://github.com/bcit-ci/CodeIgniter/archive/2.2.2.zip。 官方暂未有相关发行说明。 CodeIgniter 是一个简单快速的PHP MVC 框架。EllisLa...

oschina
2015/04/15
615
1

没有更多内容

加载失败,请刷新页面

加载更多

基于Sentry实现数据访问权限控制

Sentry初识 Sentry是适用于Hadoop生态环境、基于角色的授权管理系统,可以模块化集成到HDFS、Hive、Impala。它是一个策略引擎,运行定义授权规则,以校验用户对数据模型的访问请求。 授权粒度...

hblt-j
7分钟前
0
0
First Bad Version(leetcode278)

You are a product manager and currently leading a team to develop a new product. Unfortunately, the latest version of your product fails the quality check. Since each version is......

woshixin
38分钟前
1
0
executor 和task 优先于线程(68)

java.util.concurrent 包里有一个Executor 框架 基于接口的任务执行工具 只需要一行代码 提交一个runnable 方法 优雅的终止(必须做到,不然虚拟机可能不会退出) 对于负载不重的服务 Execut...

Java搬砖工程师
39分钟前
1
0
一条SQL查询语句是如何执行的

123

writeademo
41分钟前
3
0
CSS中position属性( absolute | relative | static | fixed )详解

四个属性的特点 static:无特殊定位,对象遵循正常文档流。top,right,bottom,left等属性不会被应用。 relative:对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流...

简心
46分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部