Big Bug Ban

兴趣 践行 创新

Archive for the ‘php扩展开发’ tag

taint的使用和源码修改

 

taint是什么?它是一个可以检测XSS漏洞的php扩展。

说明和初步的使用请查看http://www.laruence.com/2012/02/18/2560.html

taint目前最新的0.41

通过查看源码,可以发现它只能跟踪3种变量POST,GET,COOKIE。另外的REQUEST由于是通过这几个构造的。所以也可跟踪。

有3个函数是可以让我们直接调用的,

分别是taint,untaint,is_tainted

1)taint($string)

参数是一个字符串,可以定制跟踪的字符串。

比如如下代码将会抛错

结果会

Warning: main(): Attempt to echo a string that might be tainted in /media/d/htdocs/1.php on line 4 Hello Taint

2)untaint($string)

参数也是一个字符串,这个函数的作用是取消已经taint标记的变量,

比如

这个不会触发taint的报警

3)is_tainted()

无参数,返回布尔值,表示是否已经开启taint

taint是无法覆盖所有代码逻辑的,部分地方还是会没法检测到。

另外只能对已经存在的变量进行跟踪。

比如如下部分的$b是无法被跟踪到的

========================================================

下面这个taint版本是我用pecl最新的那个0.41改的

加入了一个taint_enable()函数

——–update: 请教了二姐5.3因为运行机制的原因是无法在请求开始的时候自动跟踪,但是用这个函数就可以实现了

这个函数不仅仅用于开启taint跟踪,同时会跟踪无法自动启用跟踪的$_SERVER , $_ENV, $_FILES这三个全局变量

另外改进了taint()和untaint()函数,让参数可以接受数组输入

自己测试了下,暂时没发现bug。

下载地址

[download id=”37″]

 

Written by princehaku

3月 9th, 2012 at 10:16 下午